그리디4 백준 1541 잃어버린 괄호 - 파이썬 import sysinput = sys.stdin.readlineexp = input().rstrip().split('-') arr = []for i in range(len(exp)): temp = 0 for t in exp[i].rstrip().split('+'): temp += int(t) arr.append(temp)res = arr[0]for a in arr[1:]: res -= aprint(res) 최솟값을 찾는 기준을 잘 모르겠어서 고민하다가 검색해서 알아낸 , , 답 괄호를 적절히 쳐서 값을 최소로 만드는 방법은, 핵심적으로 '-' 연산자를 기준으로 나누는 것이렇게 하면 '-' 연산자를 기준으로 나눠진 부분들을 먼저 더한 후, 마지막에 뺄셈을 수행하여 값을 최소화할 수 있음 .. 2024. 6. 25. 백준 11399번 ATM - 파이썬 import sysinput = sys.stdin.readlineN = int(input())time = [*map(int, input().split())]time.sort() # 인출하는 시간이 짧은 사람 먼저 줄세우기 sum = 0total = 0for i in range(len(time)): sum += time[i] time[i] = sum # 앞 사람 시간 + 내 시간 => i번째 사람이 걸리는 시간 total += time[i] # N명의 사람이 걸리는 총 시간의 최솟값print(total) 인출하는데 걸리는 시간이 짧은 사람이 먼저와야 누적 시간이 최소화된다.입력받은 인출 시간이 짧은 사람부터 정렬을 한 뒤에i번째 사람의 총 시간을 계산하고 (앞 사람 인출 시간 + 자신의 인출 시간).. 2024. 6. 25. 백준 11047 동전 0 - 파이썬 import sysinput = sys.stdin.readlineN, K = map(int, input().split())coins = []count = 0coins = [int(input()) for _ in range(N)]coins.sort(reverse=True)for coin in coins: count += K // coin K = K % coin if K == 0: breakprint(count)동전이 오름차순으로 입력되는데 우리는 필요한 동전 개수의 최솟값을 출력해야하기 때문에 내림차순 정렬을 한다. 1. K원을 큰 동전부터 나눈 후 몫을 count 한다.ex) 4200원이면 4200 // 1000 > 동전 4개 카운트2. K원을 큰 동전으로 나눈 나머지를 다시 반복해서 나눌 수 있도.. 2024. 6. 25. 백준 1931 회의실 배정 : 파이썬 import sysinput = sys.stdin.readlineN = int(input())time = []for i in range(N): start, end = map(int,input().split()) time.append((start, end))time.sort(key=lambda x : (x[1], x[0]))cnt = 1end = time[0][1]for i in range(1, N): if time[i][0] >= end: end = time[i][1] cnt += 1print(cnt)회의가 빨리 끝나게 되면 남은 회의 시간이 많아서 더 많은 회의를 할 수 있다.그래서 빨리 끝나는 순서대로 회의 시간을 정렬한다.time.sort(key=lambda x : (x[1], x[.. 2024. 6. 25. 이전 1 다음