본문 바로가기

OLD_알고리즘/Programmers - 알고리즘60

Programmers ] Level 2 - 더 맵게 ✍풀이 과정 ✔ 스코빌 지수를 구할 때, 첫 번째 값은 항상 작은 값이어야 합니다. 따라서 priority_queue를 min heap으로 구현합니다. (C++ STL에서 priority_queue는 max heap으로 구현되어 있습니다.) ✔ q.top( ) 1일 때까지 반복합니다. ✔ priority_queue에서 첫 번째 값, 두 번째 값을 꺼내고, queue에서는 값을 지워줍니다. 그리고 첫 번째 값, 두 번째 값으로 계산한 새로운 스코빌 지수를 priority_queue에 push합니다. ✔ q.top( ) < K일 때까지 반복되므로 push할 때마다 섞은 횟수를 ++합니다. ✔ 반복 후에도 pq값이 K보다 작다면 -1 return합니다. 🌱 정답코드 2021. 3. 23.
Programmers ] Level 2 - 전화번호 목록 2021 03 04 이전 정답코드 더보기 * 이 문제를 풀 때, 주의해야 하는 점은 "어떤 번호가 다른 번호의 접두어인 경우"라는 것입니다. 즉 테스트 케이스가 ["12388", "88"]인 경우는 접두사인 경우가 없어 답은 true가 됩니다. * 문제를 풀 때, string STL의 find( )함수를 사용했습니다. find함수는 인덱스 0부터 일치하는 문자를 찾습니다. 해당 일치하는 문자가 있을 경우, 시작 인덱스를 출력합니다. ...효율성 테스트 통과 X 코드 #include #include using namespace std; bool solution(vector phone_book) { bool answer = true; string tempfront = ""; for(int i = 0; i <.. 2021. 3. 6.
Programmers ] Level 2 - 가장 큰 수 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr ✍ 문제 해설 처음엔 위와 같이 하나씩 구하다가 이건 아닌 것 같아서 다른 분들 코드를 참고했다. 대부분의 풀이는 sort하면서 문자 크기를 비교하는 방식이었다. + ) 그런데 11번이 틀려서 찾아보니 [0, 0, 0, 0, 0]인 경우가 있으니 예외처리를 해야 한다는 것이었다. [0, 0, 0, 0, 0] 일 때, answer는 "0"이어야 한다. 🌱 정답코드 와우.... 더보기 ....Level.. 2021. 3. 4.
Programmers ] Level 1 - K번째 수 ✍ 문제 해설 처음에 어케 풀으라는 겨;;라고 하고 오분 고민하다가 commands에 담긴 값을 하나씩 빼준 후에 for문 돌려서 array에 담긴 값을 뽑아낸 후, k번째 값을 answer에 담았다. 체감 난이도는 Level 2같은데...ㅎ 2차원 배열 + 배열에 약한 나는... 언제 실력 느냐고.... 감 잃지 않게, 하루에 한 문제는 배열에 할애해야겠다. 하..ㅎ 🌱 정답코드 2021. 3. 4.