백준 11976. Promotion Counting (파이썬)
📑 문제
대회는 브론즈, 실버, 골드, 플래티넘의 등급으로 이루어져 있고, 만점을 받으면 다음 등급으로 승급이 가능하다. 새로 포함되는 인원은 브론즈 등급부터 시작하며, 한 대회 안에서 여러 번의 승급도 가능하다. 대회가 시작하기 전과 후의 각 등급별 인원을 이용해서, 각 등급으로 승급한 인원을 구하는 일을 수행해라.
✖️ 입력
입력은 네 줄로 이루어지며, 각 줄은 0에서 1,000,000까지의 정수 두 개로 이루어져 있다. 첫번째 줄은 대회 전과 후의 브론즈 인원의 수를, 두번째 줄은 대회 전과 후의 실버 인원 수를, 세번째와 네번째 줄은 각각 대회 전과 후의 골드, 플래티넘 인원 수를 포함하고 있다.
✔️ 출력
출력은 세 줄로 이루어져야 하며, 각 줄은 정수 하나를 포함한다.
첫 줄은 브론즈에서 실버로 승급한 인원, 두번째 줄은 실버에서 골드로, 세번째 줄은 골드에서 플래티넘으로 승급한 인원의 정보를 담고 있다.
📝 풀이
# [BOJ] 11976. Promotion Counting
L = list(list(map(int, input().split())) for _ in range(4))
ans = [0, 0, 0] # 출력할 값을 순서대로 담을 리스트
# 대회 전과 후의 전체 인원을 비교하여
bef, aft = 0, 0
for i in range(4):
bef += L[i][0]
aft += L[i][1]
# 인원이 추가되었으면 브론즈 초기 인원으로 가정하고 시작
if aft > bef:
L[0][0] += aft - bef
# 플래티넘부터 비교 시작
for i in range(3, -1, -1):
# 대회 후의 인원이 전보다 많으면
if L[i][1] > L[i][0]:
# 결과 값에 추가하고
ans[i-1] = L[i][1] - L[i][0]
# 낮은 등급의 대회 후 인원에 그 차이만큼을 포함한다
L[i-1][1] += L[i][1] - L[i][0]
for a in ans:
print(a)
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 1622. 공통 순열 (python) (0) | 2022.12.19 |
---|---|
[BOJ] 19844. 단어 개수 세기 (python) (0) | 2022.12.18 |
[BOJ] 2805 나무 자르기 (python) (0) | 2022.12.12 |
[BOJ] 1966 프린터 큐 (python) (0) | 2022.12.11 |
[BOJ] 4949 균형잡힌 세상 (python) (0) | 2022.12.10 |