BOJ 문제 링크: https://www.acmicpc.net/problem/11054
수열 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
댓글을 통한 코드리뷰, 질문, 지적 언제든 환영입니다!
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 백준 3190번 뱀 c++ (0) | 2021.10.10 |
---|---|
[BOJ] 백준 14500번 테트로미노 c++ (0) | 2021.10.08 |
[BOJ] 백준 14698번 전생했더니 슬라임 연구자였던 건에 대하여 (Hard) c++ (0) | 2021.10.01 |
[BOJ] 백준 17828번 문자열 화폐 c++ (0) | 2021.09.29 |
[BOJ] 백준 15686번 치킨 배달 c++ (0) | 2021.09.22 |