Notice
Recent Posts
Recent Comments
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

lgvv98

[Swift] BOJ 1697 ์ˆจ๋ฐ”๊ผญ์งˆ (2์ฐจ์› ๋ฐฐ์—ด๋ณด๋‹ค 1์ฐจ์› ํŠœํ”Œ ๋ฐฐ์—ด) ๋ณธ๋ฌธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ

[Swift] BOJ 1697 ์ˆจ๋ฐ”๊ผญ์งˆ (2์ฐจ์› ๋ฐฐ์—ด๋ณด๋‹ค 1์ฐจ์› ํŠœํ”Œ ๋ฐฐ์—ด)

๐Ÿฅ• ์บ๋Ÿฟ๋งจ 2022. 4. 5. 01:03

BOJ 1697 ์ˆจ๋ฐ”๊ผญ์งˆ

 

โœ… ์ผ๋‹จ ์ด ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๊ทธ๋™์•ˆ ์ž์ฃผ ์‚ฌ์šฉํ–ˆ๋˜ BFS ํŒจํ„ด์„ ์ ์šฉํ–ˆ๋Š”๋ฐ, ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ํ†ต๊ณผํ•  ์ˆ˜ ์—†์—ˆ์Œ.

์งˆ๋ฌธ๋ž€์ด๋‚˜ ๋‹ค๋ฅธ ๋ถ„๋“ค์ด Swift๋Š” Queue๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ†ต๊ณผํ•œ๋‹ค๊ณ  ์ œ์‹œํ•˜๋Š” ์˜๊ฒฌ๋„ ์žˆ์—ˆ๋Š”๋ฐ, ๋‚ด๊ฐ€ ๋ณด๋‹ˆ๊นŒ ์ด๊ฒŒ ๊ทธ๋ ‡๊ฒŒ ํฐ ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ฒƒ ๊ฐ™์ง€๋Š” ์•Š์•˜์Œ.

 

๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์ •๋ง ์ข‹์€ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ฐœ๊ฒฌํ•ด์„œ ์ด ๋ถ„์˜ ์•„์ด๋””์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•„์ฃผ ์•ฝ๊ฐ„๋งŒ ๊ฐœ์„ ํ•˜๊ณ  ์ด ๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ํ•™์Šตํ•จ.

 

์Šค์œ„ํ”„ํŠธ๋Š” ์œ ๋… 2์ฐจ์› ๋ฐฐ์—ด๋ณด๋‹ค ์ฐจ๋ผ๋ฆฌ 1์ฐจ์› ๋ฐฐ์—ด์— ํŠœํ”Œ์„ ๋„ฃ๋Š”๊ฒŒ ์†๋„๊ฐ€ ์—„! ์ฒญ! ๋‚˜! ๊ฒŒ! ๋น ๋ฆ„

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ 2์ฐจ์› ๋ฐฐ์—ด ๋งŒ๋“ค์ง€๋ง์ž..!

 

์•„๋ž˜๋Š” ์‹œ๊ฐ„ ๋น„๊ต์ด๋‹ค.

2์ฐจ์› ๋ฐฐ์—ด

 

1์ฐจ์› ๋ฐฐ์—ด + ํŠœํ”Œ

โœ… ์ฝ”๋“œ

 let info = readLine()!.split(separator: " ").map{ Int(String($0))! }
        let subin = info[0] // ์ˆ˜๋นˆ์ด์˜ ์‹œ์ž‘์ 
        let target = info[1] // ๋™์ƒ ์œ„์น˜
        var queue = [(subin, 0)] // ์ด๋™ํ•˜๋Š” ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜์™€ ํ•ด๋‹น ์œ„์น˜๊นŒ์ง€ ๊ฐ€๋Š”๋ฐ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์„ ํŠœํ”Œ๋กœ ๋‹ด์Œ
        var found = false // ์ฐพ์•˜๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ๋ถˆ ๋ณ€์ˆ˜
        var visited = Array(repeating: false, count: 100001) // ์ด๋ฏธ ์ˆ˜๋นˆ์ด๊ฐ€ ๋‹ค๋…€๊ฐ„ ์ž๋ฆฌ๋“ค์„ ์ฒดํฌํ•ด์ฃผ๊ธฐ ์œ„ํ•จ
        
        var index = 0
        
        if subin == target { print(0) } // ์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆ˜๋นˆ์ด์™€ ๋™์ƒ์˜ ์œ„์น˜๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ => ๋ฐ”๋กœ ๋
        else {
            while true {
                let (now, now_count) = queue[index]
                index += 1
                var next = 0 // ์ˆ˜๋นˆ์ด๊ฐ€ ์ด๋™ํ•  ์œ„์น˜๋ฅผ ๋‹ด์„ ๋ณ€์ˆ˜
                
                for i in 0..<3 {
                    if i == 0 { next = now - 1 } // X-1 ์ด๋™
                    else if i == 1 { next = now + 1 } // X+1 ์ด๋™
                    else { next = now * 2 } // X*2 ์ด๋™
                    
                    if next < 0 || next > 100000 || visited[next] == true { continue } // ์˜ˆ์™ธ!
                    if next == target { found = true; break } // ์ฐพ์•˜์„ ๊ฒฝ์šฐ
                    visited[next] = true // ์ˆ˜๋นˆ์ด๊ฐ€ ์ง€๋‚˜๊ฐ„ ๊ณณ์€ 1๋กœ ์ฒดํฌํ—ค์ฃผ๊ธฐ (๊ฐ™์€ ๊ณณ ๋˜ ์ง€๋‚˜๊ฐˆ ํ•„์š” ์ „ํ˜€x)
                    queue.append((next, now_count + 1)) // ์ˆ˜๋นˆ์ด๊ฐ€ ์ด๋™ํ•  ์œ„์น˜์™€ ๊ทธ ์œ„์น˜๊นŒ์ง€ ๊ฐ€๋Š”๋ฐ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ ์ถ”๊ฐ€!
                }
                
                if found { print(now_count+1); break } // ๊ฒฐ๊ณผ ์ถœ๋ ฅ
            }
        }

 

 

 

 

(์ถœ์ฒ˜) 

https://seolhee2750.tistory.com/128

 

[Swift Algorithm] ์ˆจ๋ฐ”๊ผญ์งˆ BOJ #1697

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

seolhee2750.tistory.com

 

Comments