์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
- Kuring
- ๋ฐฑ์ค
- SnapKit
- visionOS
- CollectionView
- BFS
- swift
- designpattern
- node.js
- UIKit
- arkit
- TCA
- combine
- SwiftUI
- raywenderlich
- BOJ
- Xcode
- Swfit
- realm
- reactorkit
- ios
- rxcocoa
- tableView
- ํ๋ก๊ทธ๋๋จธ์ค
- RxSwift
- ํจ์คํธ์บ ํผ์ค
- XCTest
- MVVM
- Lv2
- Flutter
- Today
- Total
lgvv98
[Swift] BOJ 1697 ์จ๋ฐ๊ผญ์ง (2์ฐจ์ ๋ฐฐ์ด๋ณด๋ค 1์ฐจ์ ํํ ๋ฐฐ์ด) ๋ณธ๋ฌธ
[Swift] BOJ 1697 ์จ๋ฐ๊ผญ์ง (2์ฐจ์ ๋ฐฐ์ด๋ณด๋ค 1์ฐจ์ ํํ ๋ฐฐ์ด)
๐ฅ ์บ๋ฟ๋งจ 2022. 4. 5. 01:03BOJ 1697 ์จ๋ฐ๊ผญ์ง
โ ์ผ๋จ ์ด ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๊ทธ๋์ ์์ฃผ ์ฌ์ฉํ๋ BFS ํจํด์ ์ ์ฉํ๋๋ฐ, ์๊ฐ ์ด๊ณผ๋ก ํต๊ณผํ ์ ์์์.
์ง๋ฌธ๋์ด๋ ๋ค๋ฅธ ๋ถ๋ค์ด Swift๋ Queue๋ฅผ ๋ง๋ค์ด์ผ ํต๊ณผํ๋ค๊ณ ์ ์ํ๋ ์๊ฒฌ๋ ์์๋๋ฐ, ๋ด๊ฐ ๋ณด๋๊น ์ด๊ฒ ๊ทธ๋ ๊ฒ ํฐ ์ํฅ์ ์ฃผ๋ ๊ฒ ๊ฐ์ง๋ ์์์.
๊ทธ๋ฌ๋ค๊ฐ ์ ๋ง ์ข์ ๋ธ๋ก๊ทธ๋ฅผ ๋ฐ๊ฒฌํด์ ์ด ๋ถ์ ์์ด๋์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฃผ ์ฝ๊ฐ๋ง ๊ฐ์ ํ๊ณ ์ด ๋ถ์ ์ฝ๋๋ฅผ ํ์ตํจ.
์ค์ํํธ๋ ์ ๋ 2์ฐจ์ ๋ฐฐ์ด๋ณด๋ค ์ฐจ๋ผ๋ฆฌ 1์ฐจ์ ๋ฐฐ์ด์ ํํ์ ๋ฃ๋๊ฒ ์๋๊ฐ ์! ์ฒญ! ๋! ๊ฒ! ๋น ๋ฆ
๊ทธ๋ฌ๋๊น 2์ฐจ์ ๋ฐฐ์ด ๋ง๋ค์ง๋ง์..!
์๋๋ ์๊ฐ ๋น๊ต์ด๋ค.
โ ์ฝ๋
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] ํ๋ก๊ทธ๋๋จธ์ค LV2. ์ ๋ ฅ๋ง์ ๋๋ก ๋๋๊ธฐ (0) | 2022.04.06 |
---|---|
[Swift] BOJ 11724 ์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2022.04.05 |
[Swift] BOJ 7576 ํ ๋งํ (0) | 2022.04.03 |
[Swift] BOJ 2667 ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (0) | 2022.04.03 |
[Swift] BOJ 1012 ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2022.04.03 |