https://www.acmicpc.net/problem/2851
소스 코드는 다음과 같다.
case = []; score = 0
for _ in range(10):
case.append(int(input()))
for i in range(10):
score += case[i]
if score == 100:
print(score)
break
elif score > 100 or i == 9:
if abs(score - 100) > abs(100 - sum(case[:i])):
print(sum(case[:i]))
break
else:
print(score)
break
else:
pass
슈퍼마리오의 점수를 하나씩 추가시킨다.
만약에 점수가 100이 넘거나 마지막 스코어를 추가시켜야 할 때 비교를 진행해야 한다.
예를 들어,
4개의 점수로 98점을 획득했을 때 다섯 번째의 요소가 5점이라 치면 score = 103이므로 100을 넘는다. 그렇다면 103점일 때 100과 비교하면 3이 큰 것이고, 98점일 때 100과 비교하면 2점 차이 난다. 그렇다면 5점을 추가시켰다 하더라도 98점일 때 100점과의 차이가 더 적으므로 98점을 출력하고 끝낸다.
반대로 다섯 번 째의 요소가 3점일 때는 추가시켰을 때 100점과 비교하여 1점 차이 이기 때문에 101점을 출력하고 끝낸다.
이와 다르게 만약 열 번째 요소 추가했을 때도 100점이 넘지 않았을 때, abs(100-98)과 abs(98-100)은 같은 값이기 때문에 score += sum(case[:])를 출력하고 끝낸다.
'컴퓨터 > BOJ' 카테고리의 다른 글
[BOJ](Python) 2998번 : 8진수 / deque 주의할 점 (0) | 2020.08.29 |
---|---|
[BOJ](Python) 2991번 : 사나운 개 (0) | 2020.08.29 |
[BOJ](Python) 2053번 : 숫자 야구 (0) | 2020.08.29 |
[BOJ](Python) 2089번 : -2진수 (0) | 2020.08.29 |
[BOJ](Python) 1975번 : Number Game (0) | 2020.08.29 |