백준 2874번 게임을 만든 동준이 파이썬
문제
입력 , 출력
solution
import sys
input = sys.stdin.readline
n = int(input())
arr = [0 for i in range(n)]
for i in range(n):
arr[i] = int(input())
arr.reverse()
cnt = 0
for i in range(1, n):
if arr[i] >= arr[i - 1]:
cnt += arr[i] - (arr[i - 1] - 1)
arr[i] = arr[i - 1] - 1
print(cnt)
설명
import sys
input = sys.stdin.readline
n = int(input())
arr = [0 for i in range(n)]
for i in range(n):
arr[i] = int(input())
arr.reverse()
cnt = 0
for i in range(1, n):
if arr[i] >= arr[i - 1]:
cnt += arr[i] - (arr[i - 1] - 1)
arr[i] = arr[i - 1] - 1
print(cnt)
배열을 거꾸로 뒤집어서 i번째 인덱스값이 i-1보다 클 경우에는
i번째 값 -1을 만들면 최소한으로 감소하게 할수있으므로 결과값 cnt에는
arr[i] - (arr[i-1]-1) 만큼 i번째 값을 감소시키면 되므로 이 값을 저장한다.
그리고 arr[i] 를 arr[i-1]-1 값을 저장한다.
후기
그리디는 여전히 어렵다
Author And Source
이 문제에 관하여(백준 2874번 게임을 만든 동준이 파이썬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@slbin-park/백준-2874번-게임을-만든-동준이-파이썬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)