백준 2846 오르막길(with Python)

6040 단어 백준백준

내가 생각한 Solution

  • 실제로 문제의 난이도가 낮게 책정된 쉬운 문제입니다.

  • 근데 저는 어렵게 풀었습니다...

  • 제 풀이가 이해가 가지 않는다면 조금 더 직관적으로 접근한 친구의 풀이를 참고해보세요!

문제에서 생각해볼 점

  • 투 포인터 느낌으로 접근했습니다. (코드를 바로 보셔도 어렵지 않을 것입니다. 대신 주석을 많이 작성했습니다.)

코드 구현

N = int(input())

# hs: heights (높이들...ㅈㅅ)
hs = list(map(int, input().split()))

sv = -1 # 오르막 길 시작 값 초기화
ev = -1 # 오르막 길 마지막 값 초기화

results = []

for i in range(N-1):
    # i+1 원소가 오르막길인데 마지막 원소인 경우
    if i == N-2 and sv != -1 and hs[i] < hs[i+1]:
        results.append([sv, hs[i+1]])
    # i 원소가 오르막길 시작인 경우
    if sv == -1 and hs[i] < hs[i+1]:
        sv = hs[i]
    # i 원소가 오르막길 마지막인 경우
    if sv != -1 and hs[i] >= hs[i+1]:
        ev = hs[i]
        results.append([sv, ev])
        sv, ev = -1, -1

mV = 0
# 최고로 긴 오르막길 길이 구하기
for sv, ev in results:
    if mV < ev - sv:
        mV = ev - sv

print(mV)

좋은 웹페이지 즐겨찾기