알고리즘 문제 풀기/백준(Baekjoon)

[백준 알고리즘] 2846. 오르막길 _ 파이썬

hibscus 2021. 2. 21. 00:03

 

 

💻 문제 풀이 접근 방법

 

 

1) 일단 오르막만 다 추출한 뒤,

 

2) 오르막길이 끊어지지 않는 곳들은 다 더해서 오르막을 구한다.

 

3) max 값을 찾아 출력

 

 

 

저는 새로운 ways 라는 리스트를 만들어 오르막들을 추가했습니다

 

내리막이나 같은 경우는 0을 추가했구요.

 

 

 

그렇게 하면 오르막 앞뒤에는 0이 생기게 되므로 

 

오르막을 더하고 0이 나올때마다 새로운 리스트에 오르막 값을 추가해서

 

이어지는 오르막길의 총 높이를 구하는 방법을 사용했습니다.

 

 

 

 

 

 

N = int(input())
arr = list(map(int, input().split()))

ways = [0]
# 오르막길만 추출(오르막길경우에 차이 추가, 내리막 혹은 같으면 0)
for i in range(len(arr)-1):
    diff = arr[i+1] - arr[i]
    if diff > 0:
        ways.append(diff)
    else:
        ways.append(0)

#이어지는 오르막 판별위해 sum을 이용
s1 = 0
new = [0]
for i in ways:
    if i > 0 :
        s1 += i
    else:
        new.append(s1)
        s1 = 0
new.append(s1)

print(max(new))

 

 

 

 

www.acmicpc.net/problem/2846

 

 

2846번: 오르막길

상근이는 자전거를 타고 등교한다. 자전거 길은 오르막길, 내리막길, 평지로 이루어져 있다. 상근이는 개강 첫 날 자전거를 타고 가면서 일정 거리마다 높이를 측정했다. 상근이는 가장 큰 오르

www.acmicpc.net