CodingTest Practice/Programmers 35

프로그래머스 : 전화번호 목록 (C++, Lv.2, 해시)

https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 소스코드 아래 실패 코드를 보면서 시간복잡도도 완전히 오버되고 로직이 틀렸음을 깨닫고 완전히 새로 짰다. 그 와중에 두 string이 같은지 확인하는게 strcmp 인줄 알고 계속 왜 틀렸나 했더니 그냥 == 쓰거나 compare를 써야 하는 것이었다. string 에 대해 제대로 알아야 할 것 같다. https://blockdmask.tistory.com/..

프로그래머스 : 완주하지 못한 선수 (C++, Lv.1, 해시)

https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 해시 문제를 풀 줄 몰라서 블로그에 올라온 정답과 해시에 대한 공부를 하고 문제를 풀어보았다. https://gracefulprograming.tistory.com/3 [C++] map vs hash_map(unordered_map) 개요 hash_map은 비표준 Container인데 반해(stdext namespace에 포함) unorder..

프로그래머스 : 다음 큰 숫자 (C++, Lv.2,연습문제)

https://programmers.co.kr/learn/courses/30/lessons/12911 코딩테스트 연습 - 다음 큰 숫자 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니 programmers.co.kr 따로 코멘트할 것 없이 그냥 코드만 봐도 이해가 될 것이다! 레벨 2 치고 나름 쉬운 문제인 것 같다. 소스코드 #include #include using namespace std; // 해당 수를 2진수로 바꿀 때 1의 갯수 int get1(int n) { int count = 0; while(n) { if(n%2 == 1) c..

프로그래머스 : 124나라의 숫자 (C++, Lv.2, 연습문제)

https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 문제를 보자마자 3진수 구하는 것 처럼 풀면 되겠다고 생각했는데 그러기엔 규칙성이 좀 다른 느낌이었다. 대충 문제에 대해 간단한 이해만 하고 집에 와서 문제를 다시 보았다. n이 꽤 크기도 하고 예시 외의 숫자도 적어보니 어느 정도 간단한 규칙성을 알게 됐다. 대충 끄적여 본건데 숫자가 3으로 나눠 떨어지는 경우 몫에서 -1을 해주고 계산하니 얼추 맞는 느낌이라 코드를 실행해봤더니 성공적이었다.😀 소스코드 #include #include using namespace std; string solution(int n) { string a..

프로그래머스 : 완주하지 못한 선수(C++, Lv.1, 정렬 이용)

https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 풀이방법: 참여자 명단과 완주자 명단을 이름순으로 정렬해 두 명단을 순서대로 비교해 나아간다. 이름이 다른 경우 참가자명단에 있는 선수는 완주하지 못한 것이므로 해당 선수의 이름을 반환한다. 왜 나는 해시 방법으로 풀지 않은 것인가,,,, 남의 풀이 좀 봐야겠다... c++ string에서 문자열을 어떻게 비교하는지 몰라서 아래 블로그를 찾아..

프로그래머스 : 네트워크(C++, Lv.3, DFS)

https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 풀이 참고 블로그 풀다가 도저히 생각나지 않아서 여러 블로그 글을 봤는데 그나마 이 블로그 글이 내가 기존에 알던 내용을 응용해서 풀어주었다. [프로그래머스] 네트워크 C++/Kotlin 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고,..

프로그래머스 : 더 맵게(C++, Lv.2, 힙)

https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 우선순위 큐에 대해 제대로 알지 못해 다른 풀이를 보고 풀었다. 정답 코드 #include using namespace std; int solution(vector scoville, int K) { int answer = 0; //오름차순 우선순위 큐 생성과 초기화 한 번에 // priority_queue pq(scoville.begin(), sco..

프로그래머스 : 타겟넘버(C++, Lv.2, DFS)

https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 재귀를 통한 DFS방법으로 문제를 풀어보았다. #include #include using namespace std; int answer = 0; void dfs(vector numbers, int taget,int sum, int cnt) { if(cnt==numbers.size()) { if(taget == sum) answer++; r..

프로그래머스 : 숫자 문자열과 영단어 (C++, Lv.1)

https://programmers.co.kr/learn/courses/30/lessons/81301?language=cpp 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 하다가 문자열을 어떻게 처리해야 할지 도저히 못 풀겠어서 그냥 블로그에서 파이썬 코드 봤는데 너무 짧게 쉽게 구현되길래 현타가 왔다.... 파이썬이 진짜 대박이긴 한 것 같다 그리고 C++ 다른 사람 코드도 봤는데 파이썬 만큼이나 간단하게 구현할 사람이 있어 그 코드를 참고했다. regex_repalce 함수를 통해 문자열을 바..

프로그래머스 : 없는 숫자 더하기 (C++, Lv.1)

https://programmers.co.kr/learn/courses/30/lessons/86051 코딩테스트 연습 - 없는 숫자 더하기 0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr #include #include using namespace std; int solution(vector numbers) { bool visited[10] = {0}; int answer = -1; for(int i= 0; i < numbers.size(); i++) { int num = numbers[i]; if..