제 코드를 공유합니다. 아이디어는 같습니다.
감소수열의 경우, 수열을 뒤집으면 증가수열을 구하는 것과 같습니다.
upper[x] 는 0~x까지의 최장 증가수열의 길이,
lower[x] 는 x~끝까지의 최장 감소수열의 길이입니다.
11054번 - 가장 긴 바이토닉 부분 수열
제 코드를 공유합니다. 아이디어는 같습니다.
감소수열의 경우, 수열을 뒤집으면 증가수열을 구하는 것과 같습니다.
upper[x] 는 0~x까지의 최장 증가수열의 길이,
lower[x] 는 x~끝까지의 최장 감소수열의 길이입니다.
댓글을 작성하려면 로그인해야 합니다.
sontg123 3년 전 1
더러운 코드로 통과 했습니다 좀더 깔끔하게 풀어보고싶어서 여러분들의 아이디어가 궁굼합니다
제 아이디어는
n번째 앞 에서의 증가수열과 n번째뒤에서의 감소수열의 최대개수를 합해서 -1했습니다 이중 가장 큰값을 저장해놓고 정답으로 냈구요
이렇게 하기위해서는 수열의 모든수를 기준으로 검사해야 하고 for(처음~끝) 까지 할때 앞 증가수열은 차근차근 하나씩 증가하니 할때마다 하나만 더해서 검사해주면 되는데 뒤에 감소수열은 처음부터 거의 전체를검사하여 만들어야하고 고민끝에 전체를 만들때 이를 chache로저장해놨다가 쓰는 방법으로했습니다 설명이 복잡한거처럼 코드도 드러워서 다른 아이디어가 궁굼합니다