공부하고 기록하는, 경제학과 출신 개발자의 노트

프로그래밍/코딩테스트 문제풀이

[Python] 구름. 개구리 2

inspirit941 2020. 4. 29. 19:09
반응형

https://level.goorm.io/exam/43230/%EA%B0%9C%EA%B5%AC%EB%A6%AC-2/quiz/1

 

구름LEVEL

코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입니다. 기업에서 선호하는 C, C++, 파이썬(Python), 자바(Java), 자바스크립트(Javascript) 이외에 여러 가지 프로그래밍 언어로 풀이할 수 있습니다.

level.goorm.io

도착점에서부터 시작점으로 역산하면서  '한 칸 이동하는 데 필요한 값'을 갱신하는 문제.

 

 

# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
import sys
n = int(sys.stdin.readline())
arr = list(map(int, sys.stdin.readline().split()))
# 보유해야 할 힘의 양
answer = 0
# 뒤에서부터 계산하면
for idx in range(len(arr)-1, 0, -1):
# 한 칸 이동하는 데 필요한 p의 양
need_p = arr[idx] - arr[idx-1]
# 햔제 보유한 힘의 양보다 많이 필요하면 answer 값 업데이트
answer = max(need_p, answer)
# p손실 보충을 위한 값
answer += 1
# 0에서 첫 번째 돌까지 이동하는 것 계산
need_p = arr[0]
answer = max(need_p, answer)
# 만약 첫 번째 돌까지 이동하는 데 필요한 p값이 제일 클 경우, p손실 보충을 위해 +1
if answer == need_p:
answer += 1
print(answer)
반응형