← 학습 코스

가장 길게 증가한 구간

C++완성형

현재 끝나는 구간과 전체 최장을 나눠요

이전 레슨의 최고값은 원소 한 개였어요. 이번에는 바로 이웃한 값들이 계속 증가하는 구간을 읽어요. {2,5,7,1}에서 앞 세 값은 증가하지만 7에서 1로 갈 때 끊겨요.

length를 ‘지금 위치에서 끝나는 증가 구간 길이’, best를 ‘지금까지 본 최장 길이’로 정해요. 같은 값도 엄격한 증가가 아니므로 구간을 끊어요.

끊긴 뒤에도 현재 값은 새 시작이에요

값 바로 앞보다 큰가요? length best
2 첫 원소 1 1
5 예 2 2
7 예 3 3
1 아니요 1 3
3 예 2 3

끊길 때 length는 0일까요, 1일까요? 현재 값 하나의 구간이 새로 시작하므로 1이에요. best까지 1로 되돌리면 앞에서 찾은 길이 3을 잃어요. <algorithm>의 max는 두 후보 중 큰 값을 고를 때 쓸 수 있어요.

직접 풀어봐요

values에서 원소들이 연속한 위치에 있고 바로 다음 값이 항상 더 큰 구간의 최대 길이를 반환해요. 떨어진 값을 골라 연결할 수 없어요. 빈 vector는 0, 원소 한 개는 1을 반환해요.

길이는 0100, 원소는 −10001000이에요. 실행용 입력은 n과 다음 줄의 n개 값, 출력은 반환값이에요. 하네스가 입력·출력을 처리해요.

예시 1: values={1,4,6,2,3} → 3. 앞의 1·4·6이 길이 3인 증가 구간이에요. 예시 2: values={9,7,5} → 1. 두 값짜리 증가가 없어 길이 1이에요.

예시 입력

5
1 4 6 2 3

예상 결과

3

예시 입력

3
9 7 5

예상 결과

1
핵심 개념
  • stl-vector: 현재 증가 구간 길이와 전체 최장 길이를 분리해요.

코드 작성과 채점은 로그인 후 이용해요

로그인하고 풀기