반응형
문제
https://www.acmicpc.net/problem/1904
1904번: 01타일
지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이
www.acmicpc.net
풀이
다이나믹 프로그래밍으로 풀 수 있는 문제입니다.
N이 1일 때는 1만 만들 수 있고, N이 2일 때는 00, 11 로 두 가지를 만들 수 있습니다.
N이 3일 때는 어떠할까요?
N이 1일 때의 경우에서 "00" 타일 붙히기 + N이 2일때에서 "1"타일을 붙히기 일 것입니다.
따라서 100, 001, 111 로 3가지 경우일 것입니다.
이렇게 이전의 결과들을 바탕으로 다음 결과를 도출할 수 있습니다.
점화식 : f(n)=f(n−1)+f(n−2)
초기값 : f(1)=1,f(2)=2
소스코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let n = Int(readLine()!)! | |
var cache = [Int](repeating: 0, count: 1_000_001) | |
cache[1] = 1 | |
cache[2] = 2 | |
for i in 3...1_000_000 { | |
cache[i] = cache[i - 1] + cache[i - 2] | |
cache[i] %= 15746 | |
} | |
print(cache[n]) |
후기
다이나믹 프로그래밍 문제중에 그나마 풀만했던 문제였습니다.
다이나믹 프로그래밍 너무 어렵다..😂
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 1912 연속합 (Swift) (0) | 2023.04.06 |
---|---|
[BOJ] 백준 9461 파도반 수열 (Swift) (0) | 2023.04.06 |
[BOJ] 백준 9184 신나는 함수 실행 (Swift) (0) | 2023.04.05 |
[BOJ] 백준 24416 알고리즘 수업 - 피보나치 수 1 (Swift) (0) | 2023.04.05 |
[BOJ] 백준 1449 수리공 항승 (Swift) (0) | 2023.04.05 |