[BOJ] 11976. Promotion Counting (python)

백준 11976. Promotion Counting (파이썬)

 

11976번: Promotion Counting

Input consists of four lines, each containing two integers in the range 0..1,000,000. The first line specifies the number of bronze participants registered before and after the contest. The second line specifies the number of silver participants before and

www.acmicpc.net

 

📑 문제

대회는 브론즈, 실버, 골드, 플래티넘의 등급으로 이루어져 있고, 만점을 받으면 다음 등급으로 승급이 가능하다. 새로 포함되는 인원은 브론즈 등급부터 시작하며, 한 대회 안에서 여러 번의 승급도 가능하다. 대회가 시작하기 전과 후의 각 등급별 인원을 이용해서, 각 등급으로 승급한 인원을 구하는 일을 수행해라.

 

✖️ 입력

입력은 네 줄로 이루어지며, 각 줄은 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)