그리디(5)
-
BOJ(백준) 2437번 저울 파이썬
2437번: 저울 하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓 www.acmicpc.net 코드 import sys r=sys.stdin.readline N=int(r()) l=list(map(int,r().split())) l.sort() money=1 for i in l: if money < i: break money += i print(money) 해설 입력받은 리스트 l 을 오름차순으로 정렬한 후에 weight 의 초기값을 1로 두고 포문을 이용해 리스트 안 요소와 weight 를 비교하였다. 만약 리스트의 요소가 weight 보다 크다면 측정할 수 없는..
2021.03.23 -
BOJ(백준) 11047번 동전 0 파이썬
11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 코드 import sys r=sys.stdin.readline N,K=map(int,r().split()) l=[] cnt=0 for _ in range(N): l.append(int(r())) for i in l[::-1]: cnt += K // i K%=i print(cnt) 해설 큰 단위의 돈부터 확인하기 위해 리스트를 맨 뒤 인덱스부터 하나씩 포문에서 확인하였다. K 보다 돈의 단위가 작아지는..
2021.03.22 -
BOJ(백준) 1946번 신입 사원 파이썬
1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 코드 import sys r=sys.stdin.readline T=int(r()) for _ in range(T): cnt=0 N=int(r()) l=[[0,0] for _ in range(N)] for i in range(N): a,b=map(int,r().split()) l[i][0]=a l[i][1]=b l.sort(key=lambda x:(x[0])) cnt=1 s=l[0][1] for i in range(1,N): if l[i][1..
2021.03.22 -
BOJ(백준) 2217번 로프 파이썬
2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 코드 import sys r=sys.stdin.readline N,*l=int(r()), for i in range(N): l.append(int(r())) l = sorted(l, reverse=True) res = [] for i in range(len(l)): res.append((i+1) * l[i]) print(max(res)) 해설 각 로프들이 버틸 수 있는 최대 중량들이 (10, 6, 4) 이라고 하면 (10X1, 6X2, 4X3) 중 최대..
2021.03.22 -
BOJ(백준) 1931번 회의실 배정 파이썬
1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 코드 import sys r=sys.stdin.readline N=int(r()) l=[[0,0] for _ in range(N)] res=[] for i in range(N): start,end=map(int,r().split()) l[i][0] = start l[i][1] = end l.sort(key=lambda x:(x[1],x[0])) res.append(l[0]) for i in range(1,N): if res[-1][1]
2021.03.22