BOJ 문제 링크: https://www.acmicpc.net/problem/11054

 

11054번: 가장 긴 바이토닉 부분 수열

첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000)

www.acmicpc.net

수열 S가 어떤 수 Sk를 기준으로 S1 < S2 < ... Sk-1 < Sk > Sk+1 > ... SN-1 > SN을 만족한다면, 그 수열을 바이토닉 수열이라고 한다.

수열 S가 주어졌을 때, 그 수열의 부분 수열 중 바이토닉 수열이면서 가장 긴 수열의 길이를 구하는 문제이다.

 

재귀를 이용해서 현재 상황에서 바이토닉을 만들 수 있는 경우를 각각 따져가면서 가장 긴 경우를 반환하는 식으로 문제를 풀 수 있다.현재 상황을 구분하는 변수들로는 curPos(수열 S에서의 현재 위치), lastNum(가장 최근에 바이토닉의 일부로 고른 숫자),isDec(현재 만들고 있는 바이토닉이 증가중인지 감소중인지) 이렇게 3개가 있다.

 

코드 원본: https://github.com/sbl133/BOJ/blob/main/%2311054.cpp

 

GitHub - sbl133/BOJ

Contribute to sbl133/BOJ development by creating an account on GitHub.

github.com

댓글을 통한 코드리뷰, 질문, 지적 언제든 환영입니다!

+ Recent posts