๋ฌธ์ ์ค๋ช
๋ฌธ์ ํ์ด
ํ ์ธ์จ์ด ๋๋ค๊ณ ์ข์ ๊ฒ๋ ์๋๊ณ ๊ธฐ์ค์ก์ด ๋ฎ๋ค๊ณ ์ข์ ๊ฒ๋ ์๋ ๊ฒ ๊ฐ์๋ค.
๋ฐ๋ผ์ ํ ์ธํ๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ฐ์ง๋ฉฐ ๊ณ์ฐํด์ผ ํ๊ธฐ ๋๋ฌธ์ DFS๋ฅผ ์ฌ์ฉํ๋ค.
DFS(ํ ์ธ๊ฐ์, [ํ ์ธํผ์ผํธ๋ค])
๋ก ๋๋ฆฌ๋ฉฐ ํ ์ธ๊ฐ์๊ฐ ์ด๋ชจํฐ์ฝ ๊ฐ์๋ ๊ฐ์ ๋ ๋ฉ์ถ๊ณ
์ด๋ชจํฐ์ฝ ์ฌ์ฉ์์ ์์ ์ด์ก์ ๊ณ์ฐํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ค.
์ฝ๋
import Foundation
func solution(_ users:[[Int]], _ emoticons:[Int]) -> [Int] {
// ๊ฐ์
์ ์, ํ๋งค์ก ๊ณ์ฐํด์ ๋ฆฌํด ex) [1, 5100]
func calcResult(_ percents: [Int]) -> [Int] {
var answer = [0, 0]
for i in 0..<users.count {
var total = 0
for j in 0..<emoticons.count {
// ๊ธฐ์ค ํ ์ธ ๊ธ์ก ์ด์์ด๋ฉด ๊ตฌ๋งค
if users[i][0] <= percents[j] {
total += Int(Double(emoticons[j]) * Double(100-percents[j]) * 0.01)
}
}
// ๋ง์ฝ ์ผ์ ๊ธ์ก ์ด์์ด๋ฉด ์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ๊ฐ์
if total >= users[i][1] {
answer[0] += 1
}
else {
answer[1] += total
}
}
return answer
}
var answer = [0, 0]
let percentList = [10, 20, 30, 40]
func DFS(_ count: Int, _ percents: [Int]) {
// ์ด๋ชจํฐ์ฝ๋ค์ ํ ์ธ๋ฅ ์ด ๊ฒฐ์ ๋์์ผ๋ฉด
if count == emoticons.count {
let result = calcResult(percents)
// ํ์ฌ๋ณด๋ค ์ด๋ชจํฐ์ฝ ๊ฐ์
์์๊ฐ ํฌ๋ฉด ๋ฌด์กฐ๊ฑด ๋ฐ๊ฟ
if answer[0] < result[0] {
answer = result
}
// ํ์ฌ๋ณด๋ค ์ด๋ชจํฐ์ฝ ๊ฐ์
์์๋ ๊ฐ์ง๋ง ์ด ๊ธ์ก์ด ํฐ ๊ฒฝ์ฐ ๋ฐ๊ฟ
else if answer[0] == result[0] && answer[1] < result[1] {
answer = result
}
}
else {
// 10, 20, 30, 40 ํผ์ผํธ ๊ณ์ DFS ๋๋ฆผ
for i in 0..<4 {
var arr = percents
arr.append(percentList[i])
DFS(count+1, arr)
}
}
}
DFS(0, [])
return answer
}
ํ๊ธฐ
ํ์ด ์๊ฐ ์ฝ 1์๊ฐ
1.
ํ ์ธ์ก์ด 10%, 20%, 30%, 40% ์ค ํ๋๋ผ๊ณ ๋ฌธ์ ์ ์จ์์๋๋ฐ ์ ๋๋ก ์์ฝ์ด์ ์บ์น๋ฅผ ๋ชปํ๋ค..ใ ใ ใ
์ด๊ฒ๋์ ๋์ ํ ๊ฐ์ด ์์กํ์ ํค๋งค๋ค๊ฐ ์๊ฐ ์ก์๋จน์ ใ
๋ฌธ์ ๋ฅผ ์ ์ฝ์...
2.
calcResult ์ ๋๋ก ์งฐ๋์ง ๋ณด๋ ค๊ณ ํ๋ก๊ทธ๋๋จธ์ค์์ ํ๋ฆฐํธ ์ฐ์ด๋ณด๋๋ฐ ์๊พธ dump ์๋ฌ ๋ธ
์๋ง ํ ์ผ๋ง๋ค ์ด๋ชจํฐ์ฝ ๊ฐ์๊ฐ ๋ค๋ฅธ๋ฐ calcResult([10, 20]) ์ด๋ฐ์์ผ๋ก ํ ์ธ ๊ฐ์๋ ๊ณ ์ ํด์ ๊ทธ๋ฐ๋ฏ..?
๊ฒฐ๋ก ์ ๋ง๊ฒ ๊ตฌํํ๋๋ฐ ์ด๊ฒ๋ ์๋ฌ๋ ์ ๋นํฉํ๋ฉฐ ์๊ฐ ๋ญ๋น ํจ
ํ๋ก๊ทธ๋๋จธ์ค์์ ๋ฌธ์ ํ ๋ ๊ณ์ ํ๋ฆฐํธํ๋ ์ต๊ด์ด ์๋๋ฐ ์ด๋์ ๋ ๊ตฌํํ๊ณ ์ฐ์ด๋ณด๋ ๊ฒ ์ข์๋ฏํ๋ค.
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค 150370] ๊ฐ์ธ์ ๋ณด ์์ง ์ ํจ๊ธฐ๊ฐ swift (1) | 2023.10.28 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค 150369] ํ๋ฐฐ ๋ฐฐ๋ฌ๊ณผ ์๊ฑฐํ๊ธฐ swift (0) | 2023.10.28 |
[ํ๋ก๊ทธ๋๋จธ์ค 86971] ์ ๋ ฅ๋ง์ ๋๋ก ๋๋๊ธฐ swift (2) | 2023.10.13 |
[๋ฐฑ์ค 1743] swift ์์๋ฌผ ํผํ๊ธฐ: DFS (0) | 2023.04.05 |
[๋ฐฑ์ค 1654] swift ๋์ ์๋ฅด๊ธฐ (0) | 2023.03.29 |