쥐수의 공부노트
백준 14889번 스타트와 링크 본문
728x90
정답 :
let n = Int(readLine()!)!
var array = Array(repeating: false, count: 100000)
var team1 = 0
var team2 = 0
var score = Array(repeating: Array(repeating: 0, count: n), count: n)
var minValue = Int.max
for i in 0..<n {
let input = readLine()!.split(separator: " ").map{Int($0)!}
score[i] = input
}
func dfs(depth : Int, start : Int) {
if depth == n/2 {
team1 = 0
team2 = 0
for i in 0..<n {
for j in 0..<n {
if !array[i] && !array[j] {
team2 += score[i][j]
}
if array[i] && array[j] {
team1 += score[i][j]
}
}
}
minValue = min(minValue, abs(team1 - team2))
return
}
for i in start..<n {
if !array[i] {
array[i] = true
dfs(depth: depth + 1, start: i)
array[i] = false
}
}
}
dfs(depth: 0, start: 0)
print(minValue)
정답 :
false 배열을 이용하여 스타트팀이 들어간 자리를 true로 변경후 진입한다.
그러면 true가 아닌 부분에서 링크팀이 들어간 점수로 계산한다.
728x90
'swift 알고리즘 > 백트래킹' 카테고리의 다른 글
백준 14888번 연산자 끼워넣기 (0) | 2023.07.25 |
---|---|
백준 15652번 N과 M(4) (0) | 2023.07.18 |
백준 15651번 N과 M (3) (0) | 2023.07.14 |
백준 15650번 N과 M(2) (0) | 2023.07.12 |
백준 15649번 N과 M (1) (0) | 2023.07.12 |