Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

똥그래미 코딩공장

백준 2851번(슈퍼 마리오) 파이썬 본문

Algorithm

백준 2851번(슈퍼 마리오) 파이썬

동그라미_ssu 2022. 2. 13. 19:48

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

 

2851번: 슈퍼 마리오

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

www.acmicpc.net

 

10개의 수를 입력받아 순서대로 더하는중 100을 넘거나 100이되면 더하는 과정을 멈추고 100에 가장 가까운 합을 출력하라는 문제이다. 문제 자체는 그 어렵지 않아 쉽게 접근 할 수 있었다. 그러나 코딩하는중 10개의 수의 합이 100을 넘지 않는 경우를 생각하지 못해 시간이 조금 걸리게 되었다. 그래도 결국 풀어냈다.

 

arr = []
for i in range(10):
        arr.append(int(input("")))
sum = 0
list =[]
for i in range (10):
    sum += arr[i]
    list.append(sum)
    if sum>=100:
        x =abs(100-list[i])
        y =abs(100-list[i-1])
        if x<=y:
            print(list[i])
            break
        else:
            print(list[i-1])
            break
if sum<100:
    print(sum)

 

10개의 수를 입력받고 차례대로 더해가면서 그 더한값을 새로운 list에 저장해 준다. 그리고 합이 100을 넘거나 같은 순간이 오면 현재 더한값과 그 전의 더한값의 수를 비교하여 그 차이가 더 적은 수를 출력한다. 그러면 두 수중 100에 더 가까운 수가 출력되기 때문이다. 그리고 마지막에는 모든 수의 합이 100이 안될 경우를 대비해 새로운 if문을 넣어줬다.