728x90
반응형
서론
본 포스팅 시리즈는 필자가 Baekjoon 문제를 풀면서 정리한 코드나 이론을 올리는 포스팅이다.
대부분의 설명은 코드의 주석으로 기재되어있으니 참고바란다.
문제
Baekjoon 9461번 - 파도반 수열:
https://www.acmicpc.net/problem/9461
해법
이번 문제는 파도반 수열의 N 번째 숫자를 구하는 문제였다. 파도반 수열은 다음과 같은 규칙을 가지고 있다.
(*P는 파도반 수열을 말함)
Pn = Pn-2 + Pn-3 (P1 = 1, P2 = 1, P3 = 1)
위 규칙을 보면 피보나치 수열과 유사하다는 것을 알 수 있다. 우리는 이번 문제에도 Bottom-Up Dynamic Programing을 적용할 수 있을 것이다. 그런데 이번엔 문제의 입력 테스트케이스가 여러개가 주어지는데, 입력 N의 값이 달라져도 계산된 파도반 수열의 값은 재활용이 가능하기 때문에 Memoization을 통해 계산된 값들을 저장해두면 공간복잡도 O(1)으로 이번 문제를 해결 할 수 있을 것이다.
풀이
참고자료
위키피디아 - 동적계획법:
https://ko.wikipedia.org/wiki/%EB%8F%99%EC%A0%81_%EA%B3%84%ED%9A%8D%EB%B2%95
728x90
반응형
'SW > Baekjoon' 카테고리의 다른 글
[Baekjoon 문제풀이] 11653 - 소인수분해 (Python 3) (0) | 2022.01.04 |
---|---|
[Baekjoon 문제풀이] 4153 - 직각삼각형 (Python 3) (0) | 2022.01.04 |
[Baekjoon 문제풀이] 2748 - 피보나치 수 2 (Python 3) (0) | 2022.01.04 |
[Baekjoon 문제풀이] 2581 - 소수 (Python 3) (0) | 2022.01.04 |
[Baekjoon 문제풀이] 2609 - 최대공약수와 최소공배수 (Python 3) (0) | 2022.01.04 |