본문 바로가기

알고리즘 공부/백준 > Python3

[백준 파이썬] #2846: 오르막길

 

3/2 오늘 대학교 개강을 하였다......ㅎ

개강한 기념으로 개강과 관련된 문제를 풀어보았다!

 

www.acmicpc.net/problem/2846

 

2846번: 오르막길

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

www.acmicpc.net

 

[문제]

상근이는 개강 첫 날 자전거를 타고 가면서 일정 거리마다 높이를 측정했고 가장 큰 오르막길의 크기를 구하려고 한다. 

측정한 높이는 길이가 N인 수열로 나타낼 수 있다. 여기서 오르막길은 적어도 2개의 수로 이루어진 높이가 증가하는 부분 수열이다. 오르막길의 크기는 부분 수열의 첫 번째 숫자와 마지막 숫자의 차이이다.

가장 큰 오르막길을 구하는 프로그램을 작성하시오.

만약 오르막길이 없는 경우에는 0을 출력한다.

 

[문제 접근]

숫자가 커질 때 더하고 작아질 떄 0으로 초기화한다.

 

 

[정답]

 

1. 측정한 높이의 수이자 수열의 크기인 N을 입력받는다. 길의 높이를 리스트 way에 저장한다.

2. 오르막길의 높이를 임시로 저장할 변수 temp와 오르막길의 높이를 저장할 리스트 ans를 선언한다.

3. for문을 돌면서 앞 길의 높이와 뒷 길의 높이를 비교하여 오르막길이라면 temp+=(뒷길 높이-앞길 높이)를 해준다. i==N-1이고 오르막길이라면 ans에 추가가 되지 않으므로 if문을 만들어 이 경우도 생각해준다. 만약 오르막길이 아니라면 ans에 temp를 더해주고 temp를 0으로 초기화한다.

4. 최종적으로 오르막길의 높이가 저장된 ans의 max값을 출력한다.