본문 바로가기
반응형

알고리즘/그리디30

[백준][Python] 11000번 강의실 배정 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 코드 import sys time = [] n = int(input()) visit = [False] * n ans = 0 for _ in range(n): s, e = list(map(int,sys.stdin.readline().split())) time.append([s,e]) time.sort() for i in range(n): if visit[i] == False: visit[i] = True ans += 1 end = time[i][1] # 수업 끝나는 시간 for j in range(i,n): if.. 2022. 4. 12.
[백준][Python] 21758번 꿀 따기 21758번: 꿀 따기 첫 번째 줄에 가능한 최대의 꿀의 양을 출력한다. www.acmicpc.net 코드 from copy import deepcopy n = int(input()) h = list(map(int,input().split())) sum = deepcopy(h) ans = 0 for i in range(1,n): sum[i] += sum[i-1] #꿀통이 왼쪽 끝 for i in range(1,n-1): ans = max(ans, sum[-2] + sum[i-1] - h[i]) #꿀통이 오른쪽 끝 for i in range(1,n-1): ans = max(ans, sum[-1]-h[0] + sum[-1]-sum[i] - h[i]) #벌들이 양쪽 끝 for i in range(1,n-1):.. 2022. 4. 11.
[백준][Python] 21314번 민겸 수 21314번: 민겸 수 민겸 수 하나가 주어진다. 민겸 수는 대문자 M과 K로만 이루어진 문자열이며, 길이는 3,000을 넘지 않는다. www.acmicpc.net 코드 def get_min(): cnt = 0 ans = [] for i in inp: if i == 'M': cnt += 1 elif i == 'K': if cnt != 0: ans.append(10**(cnt-1)) cnt = 0 ans.append(5) if cnt != 0: ans.append(10**(cnt-1)) return ans def get_max(): cnt = 0 ans = [] for i in inp: if i == 'M': cnt += 1 elif i == 'K': if cnt==0: ans.append(5) else:.. 2022. 4. 8.
[백준][Python] 16953번 A → B 16953번: A → B 첫째 줄에 A, B (1 ≤ A b: err = 1 break if b % 2 == 0: b //=2 cnt+=1 elif b % 10 == 1: b //= 10 cnt+=1 else: err = 1 break if err == 1: print(-1) else: print(cnt+1) 설명 목표 수부터 거꾸로 거슬러 올라가서 만약 목표 수가 짝수이면 2로 나눠준 뒤 cnt를 증가시키고, 1의 자리수가 1이면 10으로 나눠주고 cnt를 증가시켰다. 만약 이 둘 중에 어디에도 속하지 않으면 이것은 그 수.. 2022. 4. 7.
반응형