꾸준히 합시다
백준 파이썬 2847번: 게임을 만든 동준이 본문
https://www.acmicpc.net/problem/2847
문제 유형: 그리디 알고리즘
# Solution 1
score = []
n = int(input())
for _ in range(n):
score.append(int(input()))
score = score[::-1]
answer = 0
for i in range(1, n):
if score[i-1] <= score[i]:
dif = (score[i] - score[i-1] + 1)
score[i] -= dif
answer += dif
print(answer)
- 우선 입력으로 받은 단계별 점수 배열을 뒤집어 준다.
- 이 배열의 첫 번째 점수는 마지막 단계의 점수가 되므로 가장 커야 한다.
- 두 번째 점수부터 현재 점수가 이전 점수보다 크거나 같으면 이전의 점수보다 1 적도록 수를 변경해준다. 현재 점수가 7, 이전 점수가 5라면 7을 5보다 1 작은 수 4로 변경한다.
- 변경된 수와 기존 점수의 차만큼을 출력 값(answer)에 누적시킨다. 7을 4로 변경했다면 3을 출력 값에 누적시키는 것.
'코딩 테스트 문제 풀이' 카테고리의 다른 글
백준 파이썬 16170번: 오늘의 날짜는? (0) | 2021.03.22 |
---|---|
백준 파이썬 16171번: 나는 친구가 적다 (Small) (0) | 2021.03.22 |
백준 파이썬 11047번: 동전 0 (0) | 2021.03.18 |
백준 파이썬 5585번: 거스름돈 (0) | 2021.03.18 |
백준 파이썬 5532번: 방학 숙제 (0) | 2021.03.18 |
Comments