본문 바로가기
백준 1946 파이썬 서류 심사와 면접 성적 두가지를 비교 해야 하는데 서류 심사 결과를 기준으로 정렬을 해 주고, 면접 성적을 비교 하기로 했다. import sys T = int(input()) for _ in range(T): count = 1; a = [] N = int(input()) for _ in range(N): n, m = map(int, sys.stdin.readline().split()) a.append([n, m]) a.sort() M = a[0][1] # 서류 심사 성적으로 정렬 해 주고, M은 면접 성적 순위 for i in range(1, N): if M > a[i][1]: count += 1 M = a[i][1] print(count) 서류 심사 성적이 낮은 사람이 채용되려면 면접 성적은 반드시 .. 2021. 10. 5.
백준 11047 파이썬 n, k = map(int, input().split()) coins = []; coin_count = 0 for _ in range(n): coins.append(int(input())) coins.reverse() for i, coin in enumerate(coins,1): if k == 0: break if k // coin >= 1: coin_count += k // coin k -= coin * (k//coin) print(coin_count) 동전개수의 최솟값을 구해야 하는데 문제 조건에 A(i)는 A(i-1)의 배수라고 적혀있다. 따라서 큰단위의 동전을 가능한 많이 사용하면 된다. ( 배수가 아닐경우 무작정 큰단위의 동전을 사용하면 안된다. ) 2021. 3. 25.
백준 1931 """ 최대한 많이 사용하려면? 1. 빨리 끝나는 회의부터 찾아서 2. 차례차례 회의 스케줄에 넣음 """ N = int(input()) meeting = [] for _ in range(N): meeting.append(list(map(int, input().split()))) # 끝나는 시간 오름차순으로 정렬 meeting.sort(key = lambda x: (x[1], x[0])) print(meeting) count = 1 tmp = meeting[0][1] # 첫 회의의 끝나는 시간 for i in meeting[1:]: if tmp 2021. 3. 24.
백준 16208 n = int(input()) iron_rod = sorted(list(map(int, input().split()))) sum_iron_rod = sum(iron_rod) count = 0 for i in iron_rod: sum_iron_rod -= i count += i * sum_iron_rod print(count) 비용이 최소가 되려면 곱하는 수가 작아야 한다. 예를 들어 4개 막대기의 크기가 3, 5, 4, 2 므로 (3+5+4) * 2 라는 식이 나와야 한다는 뜻이다. 2를 잘라버리고 나서는 ( 코드에서 sum_iron_rod 에서 버림 ) 3이 가장 작기때문에 (5+4) * 3 이라는 식이 나와야 최소가 된다. 2021. 3. 22.
백준 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.