백준 16435 N, L = map(int, input().split()) fruit_height = list(map(int, input().split())) fruit_height.sort() # 앞에있는것부터 먹을 필요 없음 for i in range(N): if L >= fruit_height[i]: L += 1 print(L) 예제 입력 2를보고 처음엔 이해가 안됐다. 9도 못먹고 5도 못먹고 8도 못먹는데 어떻게 길이가 10이 될까? 알고 보니 순서대로 먹어야 한다는 말이 없었다. 작은것부터 차례차례 먹으며 커질 수 있는것이다. 따라서 오름차순으로 정렬하면 편하게 풀 수 있다. 2021. 3. 22. 백준 11399 N = int(input()) withdraw_time = sorted(list(map(int, input().split()))) tmp = 0; sum = 0 for i in range(N): tmp += withdraw_time[i] sum += tmp print(sum) N명이 다 뽑을 때 까지 걸리는 시간은 변함없다. 하지만 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구해야 하므로 오름차순으로 정렬하면 시간의 합이 최소화된다. 2021. 3. 15. 백준 20044 n = int(input()) team = list(map(int, input().split())) team.sort() power = [] for i in range(len(team)//2): power.append(team[i]+team[len(team)-1-i]) print(min(power)) 오름차순으로 정렬한 뒤 첫번째 요소와 마지막 요소의 합, 두번째 요소와 마지막에서 두번째 요소의 합,,, 으로 차례차례 리스트에 넣어 최솟값을 출력했다. 2021. 3. 13. 백준 13413 T = int(input()) for i in range(T): black = 0; white = 0 n = int(input()) first = list(input()) second = list(input()) for j in range(n): if first[j] != second[j]: if first[j] == 'B': black += 1 else: white += 1 print(max(black, white)) 최소 작업의 횟수를 구해야 하므로 가능한 1번방법을 먼저 쓰고, 남은 말들을 2번방법으로 마무리 해주는게 좋다. 목표상태의 i번째 말과 초기상태의 i번째 말이 다를 경우 필요한 색깔의 말을 +1 해준다. ( 초기상태의 말은 하얀색인데 목표상태의 말은 검은색일경우 black + 1 ) 여기.. 2021. 3. 13. 백준 20937 from collections import Counter N = int(input()) ddeokguk = [i for i in map(int, input().split())] print(max(Counter(ddeokguk).values())) 처음엔 단순히 내림차순으로 정렬한 뒤 크기가 작으면 접시를 추가했는데 오류가 있었다. 코드에서는 (4,3,2) | (2,1) 로 접시가 나뉘지만 사실은 (4,3,2,1) | (2) 로 나뉘어야 하기 때문이다. 우연히 2라는 답은 똑같았지만 예시가 달라지면 답도 달라졌다. 그래서 얻은 답은 가장 많이 나왔던 크기의 접시의 개수이다. 같은 크기의 접시는 쌓을 수 없기 때문에 찢어져야 한다. 따라서 맨 밑이든 맨 위든 접시무리 하나당 무조건 하나씩 끼워져있어야 한다는.. 2021. 3. 11. 백준 2847 N = int(input()) point = [] for _ in range(N): point.append(int(input())) point.reverse() tmp = point[0] count = 0 for i in point[1:]: if tmp 2021. 3. 11. 이전 1 2 3 4 다음