728x90
반응형

Python 문제풀이

n = int(input())

a = list(map(int, input().split()))
b = []
min = -1 #오르막길의 시작지점을 저장할 변수

if n==1:
    print(0)

for i in range(n-1):
    if i==0 and a[i]<a[i+1]: #처음이 오르막길의 시작일 경우
        min = a[i]
    elif i>0 and a[i]<a[i+1] and a[i]<=a[i-1] and min== -1: #처음이 아닌 오르막길의 시작일 경우
        min = a[i]
    elif i>0 and a[i]>a[i-1] and a[i]>=a[i+1] and min!= -1: #오르막길이 끝난 경우
        b += [a[i]-min]
        min = -1
    elif i == n-2 and a[i]>a[i-1] and min != -1 and a[i]<=a[i+1]: #끝나가는 부분이 오르막길로 끝나는 경우
        b += [a[i+1] - min]

if b == []:
    print(0)
    exit
else:
    result = b[0]
    for i in range(len(b)):
        if result < b[i]:
            result = b[i]

    print(result)

조건을 많이 달아서 코드가 조금 지저분합니다.. 주석으로 조건의 설명을 적어놨지만 저도 다시보니 복잡하네요.

 

min은 오르막길이 시작하는 경우 그 시작지점을 저장해두는 변수이고, 오르막길에 끝날 경우 min에 -1을 넣어 오르막길이 끝났다는 것을 나타내기 위해 사용합니다.

 

오르막길이 끝났을 경우 (끝난 지점 - min)을 해주면 오르막길의 높이를 알 수 있습니다. 해당 높이를 리스트에 차곡차곡 저장하고 마지막에 오르막길의 높이들이 저장된 리스트에서 최대값을 구하여 출력하면 됩니다.

728x90
반응형

+ Recent posts