https://www.acmicpc.net/problem/17224

 

17224번: APC는 왜 서브태스크 대회가 되었을까?

2019년 올해도 어김없이 아주대학교 프로그래밍 경시대회(Ajou Programming Contest, APC)가 열렸다! 올해 새롭게 APC의 총감독을 맡게 된 준표는 대회 출제 과정 중 큰 고민에 빠졌다. APC에 참가하는 참가

www.acmicpc.net

 

<해당 문제의 나의 풀이>

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

+ Recent posts