MUKER_DEV with iOS

[swift] ๋ฐฑ์ค€ - 1463๋ฒˆ: 1๋กœ ๋งŒ๋“ค๊ธฐ ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/BAEKJOON

[swift] ๋ฐฑ์ค€ - 1463๋ฒˆ: 1๋กœ ๋งŒ๋“ค๊ธฐ

MUKER 2023. 3. 31. 12:58
 

1463๋ฒˆ: 1๋กœ ๋งŒ๋“ค๊ธฐ

์ฒซ์งธ ์ค„์— 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 106๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net


๋‚˜์˜ ํ’€์ด

var num = Int(readLine()!)!
var arr = Array(repeating: 0, count: num+1)
for i in 1...num {
    if i == 1 { continue }
    arr[i] = arr[i-1]+1 // 1์„ ๋บ์„ ๋•Œ
    if i % 3 == 0 { arr[i] = min(arr[i], arr[i/3]+1) } // 3์œผ๋กœ ๋‚˜๋ˆ ์งˆ ๋•Œ
    if i % 2 == 0 { arr[i] = min(arr[i], arr[i/2]+1) } // 2๋กœ ๋‚˜๋ˆ ์งˆ ๋•Œ
}
print(arr[num])

ํ’€์ด ํ‚ค์›Œ๋“œ

DP
2๋ถ€ํ„ฐ ์ตœ์†Œ๋กœ 1๊นŒ์ง€ ๋„๋‹ฌ ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๋ฅผ arr๋ฐฐ์—ด์— ์ €์žฅํ•˜๋ฉด์„œ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ค์ค๋‹ˆ๋‹ค.
์ตœ์†Œ๋กœ ๋„๋‹ฌ ํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์€
i - 1์˜ ์ตœ์†Œ ๋„๋‹ฌ๊ฑฐ๋ฆฌ + 1
i๊ฐ€ 3์œผ๋กœ ๋‚˜๋ˆ ์งˆ ๋•Œ i / 3์˜ ์ตœ์†Œ ๋„๋‹ฌ๊ฑฐ๋ฆฌ + 1
i๊ฐ€ 2๋กœ ๋‚˜๋ˆ ์งˆ ๋•Œ i / 2์˜ ์ตœ์†Œ ๋„๋‹ฌ๊ฑฐ๋ฆฌ + 1
์ตœ๋Œ€ 3๊ฐ€์ง€์˜  ์กฐ๊ฑด ์ค‘ ์ œ์ผ ์ž‘์€ ์ˆ˜๋ฅผ ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค๋ฅผ arr์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.