youngjaeLee1026
2022. 4. 15. 13:19
1. ๋ฌธ์
2. ์ ์ถ๋ ฅ
3. ์ ์ถ๋ ฅ ์์
4. ๋ฌธ์ ์ค๊ณ
- ์ ๋ฌธ์ ๋ * 2 ์ฐ์ฐ, / 3 ์ฐ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๊ฐ ๋ ธ๋๋ผ๊ณ ๊ฐ์ ํ๋ฉด BFS๋ฅผ ์ ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์
- K๋ 1์ด์ ๊ฐ์ด๋ฏ๋ก / 3 ์ฐ์ฐ ์ 0์ด ๋์ฌ ์ ์๊ธฐ ๋๋ฌธ์ 0๋ฒ ์์น๋ ์ด๋ฏธ ๋ฐฉ๋ฌธํ๋ค๊ณ ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํจ
- * 2 ์ฐ์ฐ ์ ๋ง์์ ๊ฐ์๋ฅผ ๋์ด๊ฐ๋ฉด ์๋๊ธฐ ๋๋ฌธ์ ํด๋น ์์ธ์ฒ๋ฆฌ๋ ํ์ํจ
- ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด์ ์ธ์ ํ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ ๋๋ง๋ค count ๊ฐ์ ์ฆ๊ฐ์์ผ ์ฃผ๊ณ ,
- ํด๋น count ๊ฐ์ด K๋ฒ ๋ง์๋ถํฐ ์ ์ผ๋ณ์ด ํผ์ง ๋ง์์ ๊ฐ์์ด๋ฏ๋ก ์ ์ฒด ๋ง์์ ์(N) - count๋ฅผ ํตํด ์ ์ผ๋ณ์ด ํผ์ง ๋ง์์ ์ ์ธ์์ผ ์ค์ผ๋ก์จ ์ ์ผ๋ณ์ด ํผ์ง์ง ์์ ๋ง์์ ์๋ฅผ ๊ตฌํ ์ ์์
5. ์ ์ฒด ์ฝ๋
//MARK: - ์ ์ผ๋ณ
//MARK: - Framework
import Foundation
//MARK: - Variable
var visited: [Bool] = []
//MARK: - Function
func bfs(_ N: Int, _ K: Int) -> Int {
var count, mul, div: Int
var queue: [Int] = []
count = 0
mul = 0
div = 0
queue.append(K)
visited[K] = true
visited[0] = true
while !queue.isEmpty {
let current: Int = queue.removeFirst()
count += 1
if current * 2 <= N {
mul = current * 2
}
div = current / 3
if !visited[mul] {
visited[mul] = true
queue.append(mul)
}
if !visited[div] {
visited[div] = true
queue.append(div)
}
}
return count
}
func solution() -> Void {
//MARK: - Input
guard let input: [String] = readLine()?.components(separatedBy: " ") else { return }
let N: Int = input.map { Int($0) }[0] ?? 0
let K: Int = input.map { Int($0) }[1] ?? 0
var result: Int = 0
visited = Array(repeating: false, count: N + 10)
//MARK: - Process
result = N - bfs(N, K)
//MARK: - Output
print(result)
}
solution()
์ ์ฒด์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค.