💻 문제 풀이 접근 방법
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))
'알고리즘 문제 풀기 > 백준(Baekjoon)' 카테고리의 다른 글
[백준 알고리즘] 1244. 스위치 켜고 끄기 - 파이썬 (0) | 2021.02.27 |
---|---|
[백준 알고리즘] 1018번 체스판 다시 칠하기 - 브루트포스, 파이썬 (0) | 2021.02.21 |
[백준 알고리즘] 1713번 후보 추천하기 - 파이썬 (2) | 2021.02.20 |
[백준 알고리즘] 2798번 블랙잭 - 브루트포스 알고리즘, 파이썬 (0) | 2021.02.20 |
[백준 알고리즘] 1259. 펠린드롬 수_ 파이썬 (0) | 2021.02.19 |