반응형
문제
https://www.acmicpc.net/problem/1003
풀이
시간제한이 0.25초로 짧은 편에 속하는 문제이다.
문제에서 주어진 대로 소스코드를 짠다면 시간복잡도는 $O(2^n)$이고, n이 최대 40이므로 0.25초 내에는 풀 수 없어 다른 방법으로 풀이해야한다.
f(2)를 구한다면 f(1), f(0)이 호출된다.
f(3)은 f(2) + f(1) 이므로, f(3) = f(1) + f(0) + f(1)이된다.
f(4)는 f(3) + f(2) 이므로 ...
f(0) = (0, 1), f(1) = (1, 0) 로 초기값을 설정하여, dp를 활용해서 풀 수 있을 것 같아서 풀이하였다.
$f(n) = f(n - 1) + f(n - 2)$
$f(0) = (0, 1), f(1) = (1, 0)$
이는 $O(n)$의 시간복잡도이며, 0.25초 내에 충분히 계산할 수 있다.
소스코드
후기
문제에서 주어진 대로는 풀 수 없고, 제한시간을 확인하여 다른 방법을 떠올려야 하는 문제
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 11726 2xn 타일링 (Swift) (0) | 2025.01.12 |
---|---|
[BOJ] 백준 9095 1, 2, 3 더하기 (Swift) (0) | 2025.01.12 |
[BOJ] 백준 17219 비밀번호 찾기 (Swift) (0) | 2025.01.12 |
[BOJ] 백준 1240 노드사이의 거리 (Swift) (0) | 2024.11.03 |
[BOJ] 백준 2346 풍선 터뜨리기(Swift) (1) | 2024.11.02 |