https://www.acmicpc.net/problem/17224
<해당 문제의 나의 풀이>
N, L, K = map(int, input().split())
subtask = []
score = 0
count = 0
for i in range(N):
sub1, sub2 = map(int, input().split())
subtask.append([sub1, sub2])
subtask.sort(key=lambda x:x[1])
for lst in subtask:
if count >= K:
break
sub1, sub2 = lst[0], lst[1]
if L >= sub1:
score += 100
count += 1
if L >= sub2:
score += 40
print(score)
<해설>
위 문제의 핵심은 2차원 배열을 정렬하여야 한다는 것입니다. 왜냐하면, 해당 문제의 최대 풀 수 있는 문제 수가 정해져 있습니다. 그런데, 역량이 부족하여 2번째 어려운 보너스 부분 점수를 못 받는 문제를 먼저 풀어버리면 문제 풀이 수가 증가하여 최대한 받을 수 있는 점수가 줄어들게 됩니다. 따라서 최대한 많은 점수를 얻기 위해서는 어려운 문제 기준으로 정렬을 수행하여야 합니다.
<람다식을 통해 2차원 배열의 2번째 요소로 정렬하는 방법>
subtask.sort(key=lambda x:x[1])
'알고리즘' 카테고리의 다른 글
백준 국영수 (0) | 2022.02.22 |
---|---|
[백준] 2차원 배열의 합 (0) | 2022.01.24 |
백준 1920번 수 찾기 (0) | 2022.01.12 |
[프로그래머스] 문자열 압축 (0) | 2022.01.04 |
[이코테] 문자열 재정렬 (0) | 2022.01.04 |