728x90
문제
상근이는 자전거를 타고 등교한다.
자전거 길은 오르막길, 내리막길, 평지로 이루어져 있다.
상근이는 개강 첫 날 자전거를 타고 가면서 일정 거리마다 높이를 측정했다.
상근이는 가장 큰 오르막길의 크기를 구하려고 한다.
측정한 높이는 길이가 N인 수열로 나타낼 수 있다.
여기서 오르막길은 적어도 2개의 수로 이루어진 높이가 증가하는 부분 수열이다.
오르막길의 크기는 부분 수열의 첫 번째 숫자와 마지막 숫자의 차이이다.
예를 들어, 높이가 다음과 같은 길이 있다고 하자.
12 3 5 7 10 6 1 11. 이 길에는 2 개의 오르막길이 있다.
밑 줄로 표시된 부분 수열이 오르막길이다.
첫 번째 오르막길의 크기는 7이고, 두 번째 오르막길의 크기는 10이다.
높이가 12와 6인 곳은 오르막길에 속하지 않는다.
가장 큰 오르막길을 구하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/2846
입력
첫째 줄에 상근이가 측정한 높이의 수이자 수열의 크기인 N(1 ≤ N ≤ 1000)이 주어진다.
둘째 줄에는 N개의 양의 정수 Pi(1 ≤ Pi ≤ 1000)가 주어진다. 각 숫자는 상근이가 측정한 높이이다.
출력
첫째 줄에 가장 큰 오르막길의 크기를 출력한다. 만약 오르막길이 없는 경우에는 0을 출력한다.
예제
# input
5
1 2 1 4 6
# output
5
# input
8
12 20 1 3 4 4 11 1
# output
8
문제 풀이
# 입력 받기
N = int(input())
arr = list(map(int, input().split()))
# 오르막 길의 길이를 저장할 임시 변수 초기화
tmp = 0
# 오르막 길의 길이를 저장할 리스트 초기화
answer = []
for i in range(len(arr)-1):
# 현재 요소와 다음 요소를 비교하여 오르막인지 확인
if arr[i] < arr[i+1]:
# 오르막인 경우 tmp에 차이만큼 추가
tmp += arr[i+1] - arr[i]
else:
# 오르막이 끝난 경우, 현재까지의 오르막 길이 저장 후 tmp 초기화
answer.append(tmp)
tmp = 0
# 마지막 오르막 길이 추가
answer.append(tmp)
# 가장 긴 오르막 길이 출력
print(max(answer))
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90