Coding Test(125)
-
[Programmers] Lv2. 게임 맵 최단거리 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 전형적인 BFS 문제인 것 같습니다. 제한사항들도 비교적 쉬운 편이라 어렵지 않게 구현할 수 있었습니다. ✏️소스 코드 및 결과 #include #include using namespace std; using Position = pair; using Matrix = vector; vector directions { {-1, 0}, { 1, 0 }, { 0, -1 }, { 0, 1 } }; // 상, 하, 좌, 우 int FindEnemyCampWithMinCount(Matrix..
2023.06.22 -
[Programmers] Lv2. 주식가격 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 문제 지문의 설명이 너무 전달력 없이 작성되어 있어, 다른 분이 재해석하신 글을 참고하였습니다. 저는 스택(Stack)을 이용하여 풀었습니다. prices의 크기만큼 answer 배열에 메모리 공간을 할당해둔다. 스택에 저장되는 데이터는 이다. for문을 통해, 1초부터 prices 크기까지 초를 세며 진행한다. 스택이 비었거나, 현재 주가가 스택 top()의 주가보다 크다면 현재 주가와 시간을 스택에 삽입한다. 위 조건에 해당하지 않는다면, 주가가 낮아진 것이므로 스택에서 현..
2023.06.22 -
[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