[ BOJ / Python ] 2847번 게임을 만든 동준이

황승환·2021년 12월 30일
0

Python

목록 보기
68/498

이번 문제는 레벨별 점수를 받은 뒤 가장 높은 레벨에서 가장 낮은 레벨 방향으로 순회하며 더 높은 레벨의 점수가 더 낮은 레벨의 점수보다 낮을 경우 낮은 레벨의 점수를 높은 레벨의 점수-1로 지정해주고 감소한 만큼을 따로 누적시키고 더 높은 레벨의 점수가 더 낮은 레벨의 점수보다 높을 경우에는 다음으로 넘어가도록 하여 해결하였다.

  • n을 입력받는다.
  • 레벨 별 점수를 저장할 배열 point를 선언한다.
  • 감소시킨 점수의 누적합을 저장할 변수 cnt를 0으로 정의한다.
  • n번 반복하는 i에 대한 for문을 돌린다.
    -> 레벨 별 점수를 입력받는다.
  • 0부터 n-2까지 반복하는 i에 대한 for문을 돌린다.
    -> point[n-1-i]가 point[n-2-i]보다 클 경우 다음 반복문으로 넘긴다.
    -> 그 외에는 cnt에 point[n-2-i]-point[n-1-i]+1을 더해주고, point[n-2-i]를 point[n-1-i]-1로 갱신시킨다.
  • cnt를 출력한다.

Code

n=int(input())
point=[]
cnt=0
for i in range(n):
    point.append(int(input()))
for i in range(n-1):
    if point[n-1-i]>point[n-2-i]:
        continue
    else:
        cnt+=(point[n-2-i]-point[n-1-i]+1)
        point[n-2-i]=point[n-1-i]-1
print(cnt)

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글