๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
3๏ธโƒฃ Swift/Problem Solving

[Swift Algorithm] 1๋กœ ๋งŒ๋“ค๊ธฐBOJ #1463

by seolhee2750 2021. 10. 19.
๋ฌธ์ œ ์„ค๋ช…

์ •์ˆ˜ X์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ธ ๊ฐ€์ง€ ์ด๋‹ค.

  1. X๊ฐ€ 3์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด, 3์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.
  2. X๊ฐ€ 2๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด, 2๋กœ ๋‚˜๋ˆˆ๋‹ค.
  3. 1์„ ๋บ€๋‹ค.

์ •์ˆ˜ N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์œ„์™€ ๊ฐ™์€ ์—ฐ์‚ฐ ์„ธ ๊ฐœ๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•ด์„œ 1์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋Š” ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

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

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์—ฐ์‚ฐ์„ ํ•˜๋Š” ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ์ œ

์ž…๋ ฅ

10

์ถœ๋ ฅ

3

 

๋‚ด ๋ฌธ์ œ ํ’€์ด
var num = Int(readLine()!)!
var count = 0
var min = num // ์ตœ์†Ÿ๊ฐ’(๊ฒฐ๊ด๊ฐ’) ๋‹ด์„ ๋ณ€์ˆ˜. ์•„๋ฌด๋ฆฌ ์ˆซ์ž๊ฐ€ ์ปค๋„ ์ฃผ์–ด์ง„ ์ˆซ์ž๋ณด๋‹ค ํด ์ˆ˜๋Š” ์—†์œผ๋ฏ€๋กœ num ๋„ฃ๊ณ  ์‹œ์ž‘

func solution(_ n: Int, _ count: Int) {
    if count > min { return } // ์นด์šดํŠธ๊ฐ€ min๋ณด๋‹ค ์ปค์ง€๋ฉด ์–ด์ฐจํ”ผ ์ตœ์†Œ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๊ณ„์†ํ•  ํ•„์š”x
    if n == 1 { min = count } // 1์ผ ๊ฒฝ์šฐ min ์—…๋ฐ์ดํŠธ!
    
    if n % 3 == 0 { solution(n/3, count+1) }
    if n % 2 == 0 { solution(n/2, count+1) }
    solution(n-1, count+1)
}

solution(num, count)
print(min)

๐Ÿ‘‰ DP ๋ฌธ์ œ๋กœ, ์žฌ๊ท€ ํ˜ธ์ถœํ•˜๋ฉด์„œ 1์ด ๋  ๋•Œ๋งˆ๋‹ค ์ตœ์†Ÿ๊ฐ’์„ ํ™•์ธํ•ด์ฃผ๋Š”๊ฒŒ ํฌ์ธํŠธ!

  • n์ด 3์œผ๋กœ ๋‚˜๋ˆ ๋–จ์–ด์ง€๋Š” ๊ฒฝ์šฐ, 2๋กœ ๋‚˜๋ˆ ๋–จ์–ด์ง€๋Š” ๊ฒฝ์šฐ๋ฅผ ์กฐ๊ฑด์œผ๋กœ
    ๊ฐ ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•˜๋Š” ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ์—ˆ๊ณ , ํ˜ธ์ถœ๋งˆ๋‹ค ์นด์šดํŠธํ–ˆ๋‹ค.
    ๊ทธ๋ฆฌ๊ณ  -1 ์—ฐ์‚ฐ์€ ์–ธ์ œ๋“ ์ง€ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์กฐ๊ฑด๋ฌธ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ˜ธ์ถœํ–ˆ๋‹ค.
  • ํ•จ์ˆ˜ ์‹คํ–‰๋งˆ๋‹ค min ๊ฐ’๊ณผ count ๊ฐ’์„ ๋น„๊ตํ•˜๊ณ ,
    count ๊ฐ’์ด min๋ณด๋‹ค ํด ๊ฒฝ์šฐ ์–ด์ฐจํ”ผ ํ•ด๋‹น ์—ฐ์‚ฐ๊ฐ’์€ ์ตœ์†Œ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ return ํ•œ๋‹ค.
    ๋ฐ˜๋Œ€ ๊ฒฝ์šฐ์—๋Š” ์—ฐ์‚ฐ ๊ฒฐ๊ด๊ฐ’์ด 1์ด ๋˜์—ˆ๋‹ค๋ฉด min์— count๋ฅผ ์ €์žฅํ•ด์ค€๋‹ค.

 

๐Ÿ’ก ํ”ผ๋“œ๋ฐฑ
  • DP ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด์„œ ์ฒ˜์Œ ํ‘ผ ๋ฌธ์ œ์˜€์ง€๋งŒ, ์ž์ฒด๋กœ ์–ด๋ ต์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์‰ฝ๊ฒŒ ํ’€์—ˆ๋‹ค.
  • ์•„์ง DP ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด์˜ ์ •ํ™•ํ•œ ํฌ์ธํŠธ๋‚˜ ํŒจํ„ด์€ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ–ˆ์œผ๋ฏ€๋กœ ๋งŽ์ด ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค.

 


๋ฌธ์ œ

https://www.acmicpc.net/problem/1463

๋Œ“๊ธ€