2021.05.17 카드정렬하기 Solution 계속해서 두개씩 합치는 작업을 해야하고, 합쳐진 묶음은 하나의 묶음이 됩니다. 합치는 작업의 횟수는 결국 N-1번이고, N-1동안 최소로 합치는 작업을 하기 위해서는 계속해서 제일 작은 두 묶음을 합쳐야합니다. 이를 위해서 Heap 자료구조를 사용해서 가장 작은 값 두개를 pop 해서 합한 값을 push 하도록 구현하였습니다. import heapq N = int(input()) myHeap = [] result = 0 for _ in range(N): heapq.heappush(myHeap, int(input())) while len(myHeap) > 1: num1 = heapq.heappop(myHeap) num2 = heapq.heappop(myHea..
2021.05.10 실패율 Solution index는 스테이지-1로 되도록 리스트를 사용. 스테이지에 도달했던사람, 클리어하지 못한스테이지 인원 파악 스테이지에 도달했지만 아직 클리어 하지 못한 사람이 속한 스테이지를 notClear에 기록. 현재 속한 스테이지 전까지는 도달 후 클리어한 경우이므로 visited에 기록. 인원으로 튜플리스트 만들기. 튜플은 (실패율, 스테이지)로 이루어짐. 튜플리스트 sorting (실패율은 내림차순, 스테이지는 오름차순) sorting된 튜플리스트에서 스테이지만으로 리스트 구성 def solution(N, stages): answer = [] visited = [0 for _ in range(N)] notClear = [0 for _ in range(N)] for n..
2021.05.10 안테나 Solution 이 문제는 정답이 중간값이라는 것을 파악하는 게 핵심이다. 이외의 다른 곳에 설치하면 이동하는 쪽 반대에서 거리가 더 발생하게 된다. 정렬한 뒤 중간값을 출력해주면 된다. 홀수개일 경우 중간값(index : N//2)에 안테나를 설치하면 최소값이다. 짝수개일 경우 중간값이 두개이고 두개가 정확히 동일하다. 따라서 그 중 작은 값을 선택하면 된다. N = int(input()) homes = list(map(int, input().split())) homes.sort() if N % 2 == 0: print(homes[N//2 - 1]) else: print(homes[N//2])
Comment