heap(2)
-
백준 카드 정렬하기 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net cards라는 heap에 각 카드 묶음의 카드 수를 저장합니다. cards의 길이가 1이 될 때까지 다음을 반복합니다. 최솟값 2개를 뽑아(pop) 둘의 합을 result라는 리스트에 추가하고, 둘의 합을 cards 힙에도 다시 추가합니다. 이후 다시 최솟값 2개를 뽑아 이를 반복합니다. 마지막엔 result 리스트의 모든 원소의 합을 반환합니다. sort 함수를 이용하면 시간초과가..
2021.08.12 -
프로그래머스 더 맵게 코드 및 해설 (파이썬)
programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 💡 힙(heap)을 사용하여 풀이했습니다. heapify로 input을 오름차순으로 정렬하고, 가장 맵지 않은 것들 순서대로 2개를 뽑아(pop) 새로운 스코빌 지수를 계산합니다. 이렇게 새로 계산한 스코빌 지수를 input에 push합니다. 이때, input의 길이가 짧아 2개를 뽑지 못할 수 있으니, 이땐 문제에 명시된 대로 -1을 반환하도록 해줍니다. imp..
2021.04.25