728x90
반응형
BaekJoon 백준 17224 APC는 왜 서브 태스크 대회가 되었을까? 문제는 어떤 문제에 대해 쉬운 버전을 해결한다면 100점을 얻고, 어려운 버전을 해결한다면 140점을 얻게 된다. APC에 참가했다면 최대 몇 점을 얻을 수 있었을지 구하는 문제이다. 난이도는 Bronze 1이다.
BaekJoon 17224 APC는 왜 서브 태스크 대회가 되었을까? 문제 정보
출처
- https://www.acmicpc.net/problem/17224
알고리즘 분류
- 그리디 greedy 탐욕 알고리즘
난이도
- 브론즈 1 / Bronze 1
APC는 왜 서브 태스크 대회가 되었을까? 문제 요약
- 하나의 문제를 제한조건을 통해 쉬운 버전과 어려운 버전으로 나누어 쉬운 버전만 맞더라도 부분점수를 주는 서브 태스크 문제로 대회를 구성하는 것이다. 또한 이렇게 만들어진 문제를 쉬운 버전의 난이도 순으로 배치하려 한다.
- 어떤 문제에 대해 쉬운 버전을 해결한다면 100점을 얻고, 어려운 버전을 해결한다면 여기에 40점을 더 받아 140점을 얻게 된다. 어려운 버전을 해결하면 쉬운 버전도 같이 풀리게 되므로, 한 문제를 해결한 것으로 계산한다.
- 현정이는 L 만큼의 역량을 가지고 있어 L보다 작거나 같은 난이도의 문제를 풀 수 있다. 또한 현정이는 코딩이 느리기 때문에 대회 시간이 부족해 K개보다 많은 문제는 해결할 수 없다.
- 현정이가 APC에 참가했다면 최대 몇 점을 얻을 수 있었을지를 구하여 출력한다.
- 문제의 개수 N, 현정이의 역량 L, 현정이가 대회 중에 풀 수 있는 문제의 최대 개수 K, 쉬운 버전의 난이도 sub1, 어려운 버전의 난이도 sub2가 주어진다. (1 ≤ N ≤ 100, 1 ≤ L ≤ 50, 1 ≤ sub1 ≤ sub2 ≤ 50)
문제 풀이 과정
- 문제 별 득점을 저장할 리스트를 정의한다.
- 문제 별로 난이도와 현정이의 역량을 비교하여,
- 어려운 문제 난이도보다 역량이 크거나 같아서 풀 수 있다면 140점을 저장한다.
- 어려운 문제는 풀지 못하고 쉬운 문제 난이도보다 역량이 크거나 같아서 풀 수 있다면 100점을 저장한다.
- 아예 못 풀면 그냥 넘어간다.
- 모든 문제에 대한 득점을 구했으면 최대 득점 점수를 구해야 하므로 점수들을 정렬한 후, 리스트의 뒤에서부터 K개의 합을 구하여 출력한다.
현정이가 얻을 수 있는 "최고" 점수 이므로 K개 풀 때까지만 반복문을 돌리면 안 되고, 모두 풀었다고 가정 한 뒤, 최대 득점을 구해야 한다. (문제 자세히 읽기!)
코드 및 설명
N, L, K = map(int, input().split())
score = [0] * N # 문제 별 점수
problem = []
for _ in range(N):
problem.append(list(map(int, input().split())))
for i in range(N):
# 어려운 문제를 풀 역량이 되면
if problem[i][1] <= L:
score[i] = 140
# 어려운 문제는 못 풀고 쉬운 문제를 풀 수 있으면
elif problem[i][0] <= L < problem[i][1]:
score[i] = 100
print(sum(sorted(score)[:-(K + 1):-1]))
BaekJoon 백준 17224 APC는 왜 서브 태스크 대회가 되었을까? 문제를 파이썬 python으로 풀어보았다. greedy 탐욕 그리디 알고리즘에 관한 문제로 난이도는 Bronze 브론즈 1이다.
728x90
반응형
'Algorithm Problem Solving > BaekJoon' 카테고리의 다른 글
[BaekJoon] 백준 8974 희주의 수학시험 (Python / 파이썬) (0) | 2021.08.25 |
---|---|
[BaekJoon] 백준 15947 아기 석환 뚜루루 뚜루 (Python / 파이썬) (0) | 2021.08.24 |
[BaekJoon] 백준 2160 그림 비교 (Python / 파이썬) (0) | 2021.08.24 |
[BaekJoon] 백준 8595 히든 넘버 (Python / 파이썬) (0) | 2021.08.24 |
[BaekJoon] 백준 3023 마술사 이민혁 (Python / 파이썬) (0) | 2021.08.23 |
댓글