728x90
๋ฐ์ํ
Problem
Solution
ํด๋น ๋ฌธ์ ๋ DFS ๋ฐ ์์ ํ์ ๋ฌธ์ ์ ๋๋ค.
1. ๊ฐ ์ ์๋ง๋ค ์ด๊ธธ์ง ์ง์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
10์ ๋ถํฐ 1์ ๊น์ง ์ดํผ์น๋ฅผ ์ด๊ธธ ์ ์๋์ง๋ฅผ ํ๋ณํฉ๋๋ค.
๋ง์ฝ ์ด๊ธธ ์ ์๋ค๋ฉด ํด๋น ์ ์๋ฅผ ์ป๋ ๋ฐฉ๋ฒ๊ณผ ๊ทธ๋ฅ 0๋ฐ์ ์ด์ ๋ค๋ฅธ ์ ์๋ฅผ ์ป์ ๋ฐฉ๋ฒ์ ํํฉ๋๋ค.
DFS๋ฅผ ์ฌ์ฉํด์ ์ด๊ธฐ๋ ๊ฒฝ์ฐ์ ๊ทธ๋ฅ 0๋ฐ์ ์๊ณ ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ ๊ฒฝ์ฐ 2๊ฐ์ง๋ฅผ ์ฌ๊ทํด์ค๋๋ค.
func dfs(leftArrow:Int,depth:Int,history:[Int],info:[Int]) {
var newHistory = history
var newLeftArrow = leftArrow
...
if leftArrow > info[10-depth] {
newLeftArrow -= info[10-depth]+1
newHistory[depth] = info[10-depth]+1
dfs(leftArrow: newLeftArrow, depth: depth-1, history: newHistory, info: info)
newHistory[depth] = 0
}
dfs(leftArrow: leftArrow, depth: depth-1, history: newHistory, info: info)
}
2. ๋ง์ฝ ํ์ด์ด ๋จ์ง ์์๊ฑฐ๋, 0์ ๊น์ง ์จ ๊ฒฝ์ฐ ์ต๋ ์ ์์ ๋น๊ตํด์ค๋๋ค.
func dfs(leftArrow:Int,depth:Int,history:[Int],info:[Int]) {
...
if depth == 0 || leftArrow <= 0 {
newHistory[0] = depth == 0 ? leftArrow : newHistory[0]
let score = getScoreGap(history,info)
if maxScore == score {
maxHistory.append(newHistory)
}else if maxScore < score {
maxScore = score
maxHistory = [newHistory]
}
return
}
...
}
* ์ดํผ์น์ ๋ผ์ด์ธ์ ์ ์ ์ฐจ์ด๋ฅผ ๊ตฌํ๋ ํจ์
func getScoreGap(_ history:[Int],_ info:[Int]) -> Int {
var ryan = 0
var apeach = 0
for (i,s) in history.enumerated() {
if s == 0 {
if info[10-i] != 0 {
apeach += i
}
}else {
ryan += i
}
}
return ryan - apeach
}
3. ๋ง์ฝ ์ต๋ ์ ์๊ฐ 0๋ณด๋ค ์๋๋ผ๋ฉด [-1]์ ๋ฐํํฉ๋๋ค.
if maxScore <= 0 {
return [-1]
}
4. ์ต๋ ์ ์๊ฐ 0๋ณด๋ค ํฌ๋ค๋ฉด ๋ฎ์ ์ ์๊ฐ ๋ง์ ์์ผ๋ก ์ ๋ ฌํ ์ฒซ ๋ฒ์งธ๋ฅผ ๋ฐํํฉ๋๋ค.
func sortByMoreLowerScore() -> [Int]{
var answer:[Int] = maxHistory.first!
var max = 0
for history in maxHistory {
let numCount = history.filter{$0 != 0 }.count
if max < numCount {
answer = history
max = numCount
}
}
return answer.reversed()
}
Source Code
728x90
๋ฐ์ํ
'๐ Problem Solution > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] 2022 KAKAO BLIND RECRUITMENT ํ๊ดด๋์ง ์์ ๊ฑด๋ฌผ (0) | 2022.01.20 |
---|---|
[Swift] 2022 KAKAO BLIND RECRUITMENT ์๊ณผ ๋๋ (0) | 2022.01.19 |
[Swift] 2022 KAKAO BLIND RECRUITMENT ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (0) | 2022.01.19 |
[Swift] 2022 KAKAO BLIND RECRUITMENT k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (0) | 2022.01.19 |
[Swift] 2022 KAKAO BLIND RECRUITMENT ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ (0) | 2022.01.19 |
๋๊ธ