MUKER_DEV with iOS

[swift] λ°±μ€€ - 1003번: ν”Όλ³΄λ‚˜μΉ˜ ν•¨μˆ˜ λ³Έλ¬Έ

πŸ€– μ•Œκ³ λ¦¬μ¦˜/BAEKJOON

[swift] λ°±μ€€ - 1003번: ν”Όλ³΄λ‚˜μΉ˜ ν•¨μˆ˜

MUKER 2023. 3. 1. 23:44
 

1003번: ν”Όλ³΄λ‚˜μΉ˜ ν•¨μˆ˜

각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ§ˆλ‹€ 0이 좜λ ₯λ˜λŠ” νšŸμˆ˜μ™€ 1이 좜λ ₯λ˜λŠ” 횟수λ₯Ό 곡백으둜 κ΅¬λΆ„ν•΄μ„œ 좜λ ₯ν•œλ‹€.

www.acmicpc.net

문제 ν‘ΈλŠ” 데 μžˆμ–΄ 도움이 λ˜λ„λ‘ λ‚˜μ˜ 풀이와 κ°œμ„ λœ 풀이λ₯Ό μ˜¬λ¦½λ‹ˆλ‹€.
λ˜ν•œ 풀이 ν›„ λ‹€λ₯Έ μ‚¬λžŒμ˜ 풀이λ₯Ό 보고 μ°Έκ³ ν• λ§Œν•œ 풀이도 μ˜¬λ¦½λ‹ˆλ‹€.

- λ¬Έμ œμ— 따라 λ‚˜μ˜ ν’€μ΄λ§Œ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
- ν•΄λ‹Ή 풀이듀은 풀이 쀑 ν•˜λ‚˜μΌ 뿐 μ΅œμ„ μ˜ ν’€μ΄λŠ” 아닐 수 μžˆμŠ΅λ‹ˆλ‹€.

 


 

λ‚˜μ˜ 풀이

let input = Int(readLine()!)!
var arr: [Int] = Array(repeating: 0, count: 42)
arr[0] = 1
for i in 2...41 {
    arr[i] = arr[i-1] + arr[i-2]
}
for _ in 0..<input {
    let num = Int(readLine()!)!
    if num == 0 { print("1 0") }
    else { print(arr[num], arr[num+1]) }
}

 

ν•΄λ‹Ή λ¬Έμ œλŠ” λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ°(DP)을 μ‚¬μš©ν•˜κΈ° μœ„ν•œ λ¬Έμ œλ‹€.

DPλž€ 값을 μ €μž₯ν•˜μ—¬, μ €μž₯ν•œ 값을 μ΄μš©ν•΄ 문제λ₯Ό ν’€μ–΄κ°€λŠ” 방식인데

이λ₯Ό λ©”λͺ¨μ΄μ œμ΄μ…˜ κΈ°λ²•μ΄λΌν•œλ‹€.

λ™μΌν•œ 계산 λ°˜λ³΅μ„ μ €μž₯ν•΄ λ†“μŒμœΌλ‘œμ¨ 반볡 μˆ˜ν–‰ 속도λ₯Ό λΉ λ₯΄κ²Œ ν•œλ‹€.

 

ν•΄λ‹Ή λ¬Έμ œλŠ” ν”Όλ³΄λ‚˜μΉ˜μˆ˜λ₯Ό 미리 λ§Œλ“€μ–΄ μ €μž₯ν•΄ λ‘ μœΌλ‘œ

μ •λ‹΅μ˜ νŒ¨ν„΄μ„ νŒŒμ•…ν•΄ μ•Œλ§žμ€ ν”Όλ³΄λ‚˜μΉ˜μˆ˜λ₯Ό 좜λ ₯ν•˜μ—¬ ν’€μ—ˆλ‹€.