๋ฌธ์ :
https://www.acmicpc.net/problem/1309
๋ถ์ :
์ฒ์์ N์ ์ฃผ์ด์ก๋๋ฐ ์ฌ์์ ์๊ฐ ์ฃผ์ด์ง์ง ์์์ ์ด๋ป๊ฒ ํธ๋๊ฑด์ง ๋นํฉํ์๋ค. ๊ทผ๋ฐ ๋๋ฌผ ์์ ์๊ด์์ด ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ๊ฒ์ด์๋ค. ๊ทธ๋์ ๋๋ฌผ์ด ํ๋ง๋ฆฌ์ผ๊ฒฝ์ฐ, 2๋ง๋ฆฌ์ผ ๊ฒฝ์ฐ .. ๋ก ์๊ฐํด๋ณด์๋๋ฐ ๊ท์น์ ์ฐพ๊ธฐ ์ฝ์ง ์์๋ค. ๊ฒฐ๊ตญ ์ ํ์ ์ธ์ฐ๋ ๊ฒ์ด ๋๋ฌด์ง ๊ฐ์ด ์กํ์ง ์์ ๋ค๋ฅธ ๋ธ๋ก๊ทธ๋ฅผ ๋ณด๊ณ ํ์๋ค ใ
๋๋ฌผ์ ์๊ฐ ์๋ ๋ฌธ์ ์ ์ฃผ์ด์ง ์กฐ๊ฑด N์ ๊ฐ์ง๊ณ ๋๋ ์๊ฐํด๋ณด์
์ฐ์ ๋๋ฌผ์์ N = 1์ธ ๊ฒฝ์ฐ,
N๋ฒ์งธ ์ค์ ์ฌ์๋ ์๋ค, ์ผ์ชฝ, ์ค๋ฅธ์ชฝ ์ด 3๊ฐ์ง ๊ฒฝ์ฐ์ ์๋ฅผ ์ง๋๋ค. N=1 -> 3
N = 2์ธ๊ฒฝ์ฐ,
ํ์ฌ 2๋ฒ์งธ ์ค๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ค, ์ผ์ชฝ, ์ค๋ฅธ์ชฝ 3๊ฐ์ง ๊ฒฝ์ฐ์์๋ฅผ ์ง๋๋ค.
1) ํ์ฌ ์ค์ ์ฌ์๊ฐ ์ผ์ชฝ์ ์๋ ๊ฒฝ์ฐ๋ ์ฌ์๋ ์๋ค, ์ค๋ฅธ์ชฝ์ ๊ฒฝ์ฐ์ ์๋ง ์ง๋๋ค -> 2
2) ํ์ฌ ์ค์ ์ฌ์๊ฐ ์ค๋ฅธ์ชฝ์ ์๋ ๊ฒฝ์ฐ๋ ์ฌ์๋ ์๋ค, ์ผ์ชฝ์ ๊ฒฝ์ฐ์ ์๋ง ์ง๋๋ค -> 2
3) ํ์ฌ ์ค์ ์ฌ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ฌ์๋ ์๋ค, ์ผ์ชฝ, ์ค๋ฅธ์ชฝ์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ง๋๋ค -> 3
๋ฐ๋ผ์ ์ด๋ฅผ ์ ํ์์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ๋ค.
d[i][0] = d[i-1][0] + d[i-1][1] + d[i-1][2]
d[i][1] = d[i-1][0] + d[i-1][2]
d[i][2] = d[i-1][0] + d[i-1][1]
Swift ์ฝ๋ :
//
// main.swift
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2022/04/16.
//
import Foundation
var n = Int(readLine()!)!
var d: [[Int]] = Array(repeating: Array(repeating: 0, count: 3), count: n+1)
var mod = 9901
func placeLion() -> Int {
d[1][0] = 1 // n์ด 1์ผ๋ 0 - ์ฌ์ x
d[1][1] = 1 // ์ฌ์ ์ผ์ชฝ์
d[1][2] = 1 // ์ฌ์ ์ค๋ฅธ์ชฝ์
for i in 2..<n+1 {
d[i][0] = (d[i-1][0] + d[i-1][1] + d[i-1][2]) % 9901
d[i][1] = (d[i-1][0] + d[i-1][2]) % 9901
d[i][2] = (d[i-1][0] + d[i-1][1]) % 9901
}
return (d[n].reduce(0) { $0 + $1 }) % 9901
}
print(placeLion())
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] Swift ์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น BFS (0) | 2022.04.17 |
---|---|
[๋ฐฑ์ค] Swift 2302 ๊ทน์ฅ ์ข์ DP (0) | 2022.04.17 |
[๋ฐฑ์ค] 1049 Swift ๊ธฐํ์ค Greedy (0) | 2022.04.13 |
[๋ฐฑ์ค] Swift 20361 ์ผ์ฐ๋ ์ผ๋ฐ์๊พผ implementation (0) | 2022.04.12 |
[๋ฐฑ์ค] Swift 9466 ํ ํ๋ก์ ํธ DFS (0) | 2022.04.12 |
๋๊ธ