알고리즘 문제 풀기/백준(Baekjoon)

[백준 알고리즘] 2851. 슈퍼마리오 _ 파이썬

hibscus 2021. 2. 13. 18:21

 

💻 문제 풀이 접근 방법


1. 합을 쌓아 가다가

 

2. 100이 넘었을 때 중단시키고 그 앞의 값과 비교

 

 

 

그런데 이렇게 풀었더니, 틀리게 되었습니다ㅠㅠ

 

바로 100 미만 일 경우를 고려해주지 않았기 때문입니다.

 

 

 

🎈 문제 풀 때 다양한 경우를 함께 고려해주는 것은 정말 기초이면서도 종종 놓치는 경우가 많다.

=> 문제 제출 전에 오류가 뜰만한 반례를 대입해보자!

 

 

 

import sys

scores = 0
for _ in range(10):
    score = int(sys.stdin.readline())
    pre_scores = scores
    scores += score
    if scores >= 100:
        if abs(100-scores) > abs(100-pre_scores):
            scores = pre_scores
        break
print(scores)

 

score이 100보다 크거나 같을 때,

 

score 값과 100의 차가 pre_score과 100의 차보다 클경우만 고려해주면 나머지는 다 score 값으로 출력하면 100미만의 경우도 포함하게 됩니다!

 

 

 

www.acmicpc.net/problem/2851

 

2851번: 슈퍼 마리오

첫째 줄에 마리오가 받는 점수를 출력한다. 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다.

www.acmicpc.net