프로그래밍 대회에 문제 N개가 다음 조건으로 주어진다.
1. 문제는 난이도 순으로 배열되어 있음.
2. 모든 문제는 easy/hard 버전으로 존재. (easy = 100점, hard = 40점)
3. hard를 풀 수 있는 경우, easy는 풀지 않는다. (득점 = 140점)
4. easy만 풀거나 hard만 푸는 경우 모두 한개의 문제를 푼 것으로 센다.
5. 현정이는 난이도 L까지의 문제를 풀 수 있고, 시간 내에 K개의 문제를 풀 수 있다.
Input : N, L, K ( 문제의 갯수, 역량, 풀 수 있는 최대갯수)
easy, hard
Output : 점수의 최댓값.
def solve(L,K,tasks):
que = tasks.copy()
solved = 0
score = 0
while que:
if solved >= K : break
easy, hard = que.pop(0)
if hard<=L :
score += 140
solved += 1
elif easy<=L:
score += 100
solved += 1
else: break
return score
if __name__=='__main__':
N,L,K = list(map(int,input().split()))
tasks = []
for _ in range(N):
tasks.append(list(map(int,input().split())))
ans = solve(L,K,tasks)
print(ans)
문제 풀이:
풀어야 하는 tasks를 돌면서, hard를 풀 수 있는 경우와 easy만 풀 수 있는 경우로 나눴다.
문제는 난이도 순이라 했으니, easy를 못 풀고 else 문으로 넘어간 경우에는, 다음 문제도 풀 역량이 안되니, while문을 탈출한다.
K개의 문제를 푼 경우에는, 남은 문제의 난이도와 상관없이 while 문을 탈출한다.
##easy, hard는 난이도가 아닌 점수이므로 140, 100을 더해줘야함
'공부하는 것들 > 알고리즘' 카테고리의 다른 글
백준 1439 : 뒤집기(그리디) (0) | 2021.03.06 |
---|---|
백준 17262 : 팬덤이 넘쳐흘러(그리디)*** (0) | 2021.03.05 |
백준 159094 : UCPC는 무엇의 약자일까?(그리디) ** (0) | 2021.02.25 |
백준 2839 : 설탕 배달(그리디) (0) | 2021.02.25 |
백준 2828 : 사과 담기 게임(그리디) ** (0) | 2021.02.25 |