ํ๋ก๊ทธ๋๋จธ์ค-Swift
ํ๋ก๊ทธ๋๋จธ์ค - ํผ๋ก๋(Swift)
CheonD
2022. 10. 18. 14:08
ํ๋ก๊ทธ๋๋จธ์ค - ํผ๋ก๋(Swift)
๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/87946
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋์ ํ์ด
๋์ ์ ๊ฐ์๊ฐ ์ต๋ 8๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์ ์ฒด๋ฅผ ํ์ํด๋ ๋๋ค๊ณ ์๊ฐํ๋ค.
์ด๋ฅผ DFS๋ก ๊ตฌํํ๋๋ฐ check๋ฐฐ์ด์ ํตํด์ ๊ฐ๋ ๊ณณ์ ํ์ํ์ง ๋ชปํ๊ฒ ์ค์ ํ๋ค.
import Foundation
func solution(_ k:Int, _ dungeons:[[Int]]) -> Int {
func DFS(_ L: Int, _ leftedHP: Int, _ sum: Int) {
if sum > cnt {
cnt = sum
}
for i in 0..<dungeons.count {
if ch[i] == false {
if leftedHP >= dungeons[i][0] {
ch[i] = true
DFS(L+1, leftedHP-dungeons[i][1], sum+1)
ch[i] = false
}
}
}
}
var cnt = 0
var ch = [Bool](repeating: false, count: dungeons.count)
DFS(0, k, 0)
return cnt
}
๊ธ์ ์ ์ผ๋ฉด์ sum๋ณ์๊ฐ ๊ผญ ํ์ํ์ง์ ๋ํด ์๊ฐํ๊ณ ๊ฒฐ๊ตญ ์ง์ฐ๊ณ ์ด ์ฝ๋์์๋ ๊น์ด๊ฐ ๊ณง ๋ด์ ์ ์๋ ๊ฐ์์ด๊ธฐ ๋๋ฌธ์ L๊ณผ cnt๋ฅผ ๋น๊ตํด์ ๋ต์ ๋ฃ์ด์ฃผ์๋ค.
import Foundation
func solution(_ k:Int, _ dungeons:[[Int]]) -> Int {
func DFS(_ L: Int, _ leftedHP: Int) {
if L > cnt {
cnt = L
}
for i in 0..<dungeons.count {
if ch[i] == false {
if leftedHP >= dungeons[i][0] {
ch[i] = true
DFS(L+1, leftedHP-dungeons[i][1])
ch[i] = false
}
}
}
}
var cnt = 0
var ch = [Bool](repeating: false, count: dungeons.count)
DFS(0, k)
return cnt
}