문제풀이/Greedy

https://www.acmicpc.net/problem/19598 코드from heapq import heappop, heappushn = int(input())time = []for _ in range(n): s, e = map(int, input().split()) time.append((s, e))time.sort() # 시작 시간을 기준으로 오름차순 정렬hq = [] # 우선순위 큐 => 사용 중인 회의실들의 사용 종료 시각for i in range(n): if hq and hq[0]  1개의 회의실이 아닌 최소의 회의실을 사용하여 N개의 회의를 모두 진행해야 한다. 그렇기 때문에 매회의마다 지금 당장 사용 가능한 회의실이 있다면 거기로 넣고, 없다면 새로운 회의실을 하나 추..
11501번: 주식 입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타 www.acmicpc.net 코드 for _ in range(int(input())): n = int(input()) lst = list(map(int, input().split())) highest = -1 ans = 0 for i in range(n-1, -1, -1): if highest < lst[i]: highest = lst[i] else: ans += (highest-lst[i]) print(ans) 풀이는 간단하다. 날짜를 역순으로 가며 최대 주식 가격인 highe..
4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 코드 idx = 1 while True: l, p, v = map(int, input().split()) if l == 0 and p == 0 and v == 0: break ans = v//p*l + (v % p if l >= (v % p) else l) print(f"Case {idx}: {ans}") idx += 1 다른건 쉽지만 V%P의 값이 L보다 큰 경우를 조심해야 한다. 이 경우는 주어진 휴가일수보다 V%P가 커지는 경우이기 때문이다.
2847번: 게임을 만든 동준이 학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어 www.acmicpc.net 문제 학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어의 점수는 레벨을 클리어하면서 얻은 점수의 합으로, 이 점수를 바탕으로 온라인 순위를 매긴다. 동준이는 레벨을 난이도 순으로 배치했다. 하지만, 실수로 쉬운 레벨이 어려운 레벨보다 점수를 많이 받는 경우를 만들었다. 이 문제를 해결하기 위해 동준이는 특정 레벨의 점수를 감..
16435번: 스네이크버드 첫 번째 줄에 과일의 개수 N (1 ≤ N ≤ 1,000) 과 스네이크버드의 초기 길이 정수 L (1 ≤ L ≤ 10,000) 이 주어집니다. 두 번째 줄에는 정수 h1, h2, ..., hN (1 ≤ hi ≤ 10,000) 이 주어집니다. www.acmicpc.net 문제 스네이크버드는 뱀과 새의 모습을 닮은 귀여운 생물체입니다. 스네이크버드의 주요 먹이는 과일이며 과일 하나를 먹으면 길이가 1만큼 늘어납니다. 과일들은 지상으로부터 일정 높이를 두고 떨어져 있으며 $i (1 ≤ i ≤ N)$ 번째 과일의 높이는 $h_i$입니다. 스네이크버드는 자신의 길이보다 작거나 같은 높이에 있는 과일들을 먹을 수 있습니다. 스네이크버드의 처음 길이가 $L$일때 과일들을 먹어 늘릴 수 있는..
딜레이레이
'문제풀이/Greedy' 카테고리의 글 목록 (5 Page)