1. 문제
2. 접근방법
저는 앞에서부터 봤습니다.
대신 계속 앞에서부터 봐줘야함
매우 비효율적이었습ㄴㅣ다
3. 파이썬 코드
def cal():
answer = 0
for i in range(N - 1):
if lst[i] >= lst[i + 1]:
answer += (lst[i] - lst[i + 1] + 1)
lst[i] -= (lst[i] - lst[i + 1] + 1)
return answer
def isPlus():
for i in range(N-1):
if lst[i] >= lst[i+1]:
return False
return True
N = int(input())
lst = []
for _ in range(N):
lst.append(int(input()))
cnt = 0
while not isPlus():
cnt += cal()
print(cnt)
4. 마치며
코드리뷰를 통해 다른 분들의 풀이를 알 수 있었습니다.
뒤에서부터 봐야합니다
N = int(input())
lst = [int(input()) for _ in range(N)]
answer = 0
for i in range(N-1, 0, -1):
if lst[i] <= lst[i-1]:
num = lst[i-1] - lst[i] + 1
lst[i-1] -= num
answer += num
print(answer)
그럼 바이 !
'Algorithm > Python' 카테고리의 다른 글
[백준 1715] 카드 정렬하기 (0) | 2021.03.26 |
---|---|
[백준 16235] 나무 재테크 (0) | 2021.03.16 |
[조합] (0) | 2021.03.04 |
[알고리즘] 순열 (0) | 2021.02.07 |
[백준 16236] 아기 상어 (2) | 2021.02.03 |