MUKER_DEV with iOS

[swift] ๋ฐฑ์ค€ - 1697๋ฒˆ: ์ˆจ๋ฐ”๊ผญ์งˆ ๋ณธ๋ฌธ

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

[swift] ๋ฐฑ์ค€ - 1697๋ฒˆ: ์ˆจ๋ฐ”๊ผญ์งˆ

MUKER 2023. 7. 13. 14:39
๋ฌธ์ œ ๋งํฌ
 

1697๋ฒˆ: ์ˆจ๋ฐ”๊ผญ์งˆ

์ˆ˜๋นˆ์ด๋Š” ๋™์ƒ๊ณผ ์ˆจ๋ฐ”๊ผญ์งˆ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ํ˜„์žฌ ์  N(0 ≤ N ≤ 100,000)์— ์žˆ๊ณ , ๋™์ƒ์€ ์  K(0 ≤ K ≤ 100,000)์— ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ๊ฑท๊ฑฐ๋‚˜ ์ˆœ๊ฐ„์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ, ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜๊ฐ€ X์ผ

www.acmicpc.net


๋ฌธ์ œ

์ˆ˜๋นˆ์ด๋Š” ๋™์ƒ๊ณผ ์ˆจ๋ฐ”๊ผญ์งˆ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ํ˜„์žฌ ์  N(0 ≤ N ≤ 100,000)์— ์žˆ๊ณ , ๋™์ƒ์€ ์  K(0 ≤ K ≤ 100,000)์— ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ๊ฑท๊ฑฐ๋‚˜ ์ˆœ๊ฐ„์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ, ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜๊ฐ€ X์ผ ๋•Œ ๊ฑท๋Š”๋‹ค๋ฉด 1์ดˆ ํ›„์— X-1 ๋˜๋Š” X+1๋กœ ์ด๋™ํ•˜๊ฒŒ ๋œ๋‹ค. ์ˆœ๊ฐ„์ด๋™์„ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” 1์ดˆ ํ›„์— 2*X์˜ ์œ„์น˜๋กœ ์ด๋™ํ•˜๊ฒŒ ๋œ๋‹ค.

์ˆ˜๋นˆ์ด์™€ ๋™์ƒ์˜ ์œ„์น˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ˆ˜๋นˆ์ด๊ฐ€ ๋™์ƒ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ์‹œ๊ฐ„์ด ๋ช‡ ์ดˆ ํ›„์ธ์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์— ์ˆ˜๋นˆ์ด๊ฐ€ ์žˆ๋Š” ์œ„์น˜ N๊ณผ ๋™์ƒ์ด ์žˆ๋Š” ์œ„์น˜ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. N๊ณผ K๋Š” ์ •์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

์ˆ˜๋นˆ์ด๊ฐ€ ๋™์ƒ์„ ์ฐพ๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ


์„ฑ๊ณต ํ’€์ด

import Foundation

let NK = readLine()!.split { $0 == " " }.map { Int($0)! }, N = NK[0], K = NK[1]
var queue = [(N,0)]
var visited = Array(repeating: false, count: 100001)

while true {
    let now = queue.removeFirst()
    if now.0 == K {
        print(now.1)
        break
    }
    [now.0+1, now.0-1, now.0*2].forEach {
        if $0>=0 && $0<=100000 && !visited[$0] {
            queue.append(($0,now.1+1))
            visited[$0] = true
        }
    }
}

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

  • ๋ฌธ์ œ๋ฅผ ์ฝ์–ด๋ณด๋‹ˆ DP๋กœ ํ‘ธ๋Š” ๋ฌธ์ œ์ธ๊ฐ€ ์‹ถ์—ˆ๋Š”๋ฐ.. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜๋ฅผ ๋ณด๋‹ˆ ๊ทธ๋ž˜ํ”„ํƒ์ƒ‰์œผ๋กœ ๋ถ„๋ฅ˜๋˜์–ด ์žˆ์–ด, ๋ฐ”๋กœ ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰(BFS)์œผ๋กœ ํ’€์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ฒซ ํ’€์ด ์ฝ”๋“œ์—์„  ๋ฐฉ๋ฌธ์ฒดํฌํ•˜๋Š” ๋ฐฐ์—ด visited๋ฅผ Set์œผ๋กœ ๋งŒ๋“ค์–ด ๋ฐฉ๋ฌธ์ฒดํฌ๋ฅผ ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. Set์˜ contains() ํ•จ์ˆ˜๋Š” ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(1)์ธ ๊ฑธ๋กœ ์•Œ๊ณ  ์žˆ์–ด์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ์•ˆ ๋‚  ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ์š”.. ๋„ค ๋งž์Šต๋‹ˆ๋‹ค ์‚ฌ์‹ค contains์˜ ์ž˜๋ชป์ด ์•„๋‹ˆ๊ณ .. ์ ์˜ ์ตœ๋Œ“๊ฐ’์— ๋”ฐ๋ผ 10๋งŒ ์œ„๋Š” ์ œ์™ธํ–ˆ์–ด์•ผ ํ–ˆ๋Š”๋ฐ ์ธ์ง€ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Set์˜ ์ž˜๋ชป์ด๋ผ ์ƒ๊ฐํ•˜๊ณ  false๊ฐ’์„ ๊ฐ€์ง„ ๋ฐฐ์—ด 10๋งŒ1๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ํ’€์ด์—์„œ๋Š” ์ ์˜ ์œ„์น˜๊ฐ€ 0๋ณด๋‹ค ์ด์ƒ์ด๊ณ  10๋งŒ๋ณด๋‹ค ์ดํ•˜๋ผ๋Š” ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๋ฅผ ๋ฉดํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.