공부하기/백준

[Python] 백준 풀기 2851 - 슈퍼마리오

XEV 2023. 1. 10. 22:32

파이썬 백준 2851번

브론즈 1

https://www.acmicpc.net/problem/2851

 

2851번: 슈퍼 마리오

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

www.acmicpc.net

 

 

 

 

 

 

문제 보기

분류: 구현, 브루트포스 알고리즘, 누적 합

 

 

 

 

 

문제 풀기

누적 합이 100 을 넘기지 못했을 경우에 대한 조건을 추가해야 한다는 것을 잊지 말아야 한다.

 

 

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline


if __name__ == "__main__":
    running_total_ls = [0] * 10
    
    running_total_ls[0] = int(inputdata().strip())
    for i in range(1, 10):
        running_total_ls[i] = running_total_ls[i - 1] + int(inputdata().strip())
        if running_total_ls[i] >= 100:                  ## 누적 합이 100 이 넘었을 때.
            if (running_total_ls[i] - 100) <= (100 - running_total_ls[i - 1]):
                print(running_total_ls[i])
            elif (running_total_ls[i] - 100) > (100 - running_total_ls[i - 1]):
                print(running_total_ls[i - 1])
            break
        if i == 9 and running_total_ls[9] < 100:        ## 누적 합이 100 을 넘지 못했을 때.
            print(running_total_ls[9])
            
    print(running_total_ls)         # TEST PRINT



# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10

# 55

# [1, 3, 6, 10, 15, 21, 28, 36, 45, 55]



# 1
# 2
# 3
# 5
# 8
# 13
# 21
# 34
# 55
# 89

# 87

# [1, 3, 6, 11, 19, 32, 53, 87, 142, 0]