Coding Test/Programmers(62)
-
[Programmers] Lv2. 땅따먹기 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 입력으로 주어지는 배열 크기가 최대 \( 100,000 \times 4 \) 이기 때문에 DFS으로는 시간 초과가 걸릴 것 같더라구요. 유망하지 않은 부분은 가치지기를 하면 시간을 줄일 수 있겠지만, 기준을 어찌해야 할 지 모르겠었습니다. 그리디(Greedy)로도 현재 선택지가 최선의 선택지라는 보장이 없기에 못 사용하구요. 그래서 동적 프로그래밍(Dynamic Programming)을 한 번 사용해 봤습니다. 땅(land)의 첫 행은 dp에 그대로 저장해둔다. 현재 행과 열을..
2023.06.22 -
[Programmers] Lv2. 오픈채팅방 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 입력 데이터 개수가 최대 10만 개이기에 검색을 빠르게 하기 위해, 해시(Hash)를 사용했습니다. 구현하는 부분이 조금 길 뿐, 문제 자체는 어렵지 않았습니다. for문으로 record를 순회하면서, 객체를 생성하여 해시에 저장합니다. 다시 for문으로 record를 순회하며, 각 명령어(Enter, Leave, Change)에 해당하는 기능을 수행해주면 됩니다. ✏️소스 코드 및 결과 #include #include #include #include using namespac..
2023.06.21 -
[Programmers] Lv2. [3차] n진수 게임 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 문제를 보자마자 무슨 동아리 사람들이 이러고 노나 싶었습니다. 카카오에 가는 사람들은 다 저러고 노는 걸까요?... 아무튼, 저는 이 문제의 의도를 파악하기 힘들어서 시간이 좀 걸렸습니다. 다음 내용을 이해하는 데 좀 걸렸어요. 한 사람이 말하는 숫자는 무조건 한 자리 숫자다. (십진수 "3" -> 이진수 "11"로 변환하더라도 한 사람마다 한 자리씩 읽는다.) 예제인 n = 2, t = 4, m = 2, p = 1로 보겠습니다. 우선 십진수 0부터 차례대로 2진수로 변환해보면..
2023.06.21 -
[Programmers] Lv2. 더 맵게 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 문제 유형도 힙(Heap)이라 분류되어 있었지만, 지문을 읽자마자 최소 힙(Min Heap)이 생각나는 문제였습니다. 입력 범위 숫자가 매우 크므로, 오버플로우만 조심하면 손쉽게 풀 수 있었습니다. ✏️소스 코드 및 결과 #include #include #include using namespace std; using LL = long long; int solution(vector scoville, int K) { int answer = 0; priority_queue scovi..
2023.06.21 -
[Programmers] Lv2. k진수에서 소수 개수 구하기 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 소수 판별 부분에서 int 오버플로우가 날 수 있으므로, long long 자료형으로 작성하였습니다. 저 부분 때문에 20분은 소모한 듯해요... 1. n을 k진수로 바꾸어, 문자열로 저장하기 2. k진수 문자열에서 '0'을 기준으로 문자열 분리하기 3. 각 분리된 문자열들을 소수 검사하기 ✏️소스 코드 및 결과 #include #include #include #include using namespace std; string GetKNumber(int n, int k) { st..
2023.06.21 -
[Programmers] Lv2. 타겟 넘버 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 DFS로 풀 수 있습니다. 깊이를 numbers의 크기만큼 내려 갔을 때, 이 때까지의 연산 결과와 target이 같으면 answer++ 해주면 됩니다. 더하는 경우와 빼는 경우 두 가지만 있으므로 2개만 재귀로 작성하면 되겠네요. ✏️소스 코드 및 결과 #include using namespace std; void DFS(const vector& numbers, const int& target, int sum, int idx, int& answer) { if (idx == n..
2023.06.20