Skip to content

Commit faa45e6

Browse files
committed
[Gold IV] Title: 최고의 팀 만들기, Time: 12 ms, Memory: 79512 KB -BaekjoonHub
1 parent 8163d65 commit faa45e6

2 files changed

Lines changed: 67 additions & 0 deletions

File tree

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# [Gold IV] 최고의 팀 만들기 - 1633
2+
3+
[문제 링크](https://www.acmicpc.net/problem/1633)
4+
5+
### 성능 요약
6+
7+
메모리: 79512 KB, 시간: 12 ms
8+
9+
### 분류
10+
11+
다이나믹 프로그래밍
12+
13+
### 제출 일자
14+
15+
2026년 1월 18일 17:28:04
16+
17+
### 문제 설명
18+
19+
<p>꿍 협회는 매년 세계체스대회에 나갈 팀을 만들고 있다. 팀은 흑으로 플레이하는 15명과 백으로 플레이하는 15명, 총 30명으로 이루어진다. 꿍 협회는 가능한 최고의 팀을 만들려고 하는데 각 플레이어의 흑,백 능력치는 각각 1부터 100까지의 정수로 주어진다. 대회가 진행되는 동안 플레이어는 흑, 백 중 한 가지만으로 참여를 해야하며 팀의 전체 능력치는 흑 플레이어의 능력치를 합한것과 백 플레이어의 능력치를 합한것을 모두 더한 값이다. 어떻게 하면 꿍 협회는 가능한 높은 능력치의 팀을 만들수 있을까.</p>
20+
21+
### 입력
22+
23+
<p>입력은 각 플레이어들의 능력치로 이루어진다. 각 줄은 공백으로 구분되는 두 개의 정수로 주어진다. 첫 번째 숫자는 해당 플레이어가 백으로 플레이를 할 때 능력치고 두 번째 숫자는 흑으로 플레이를 할 때의 능력치다. 최소한 30줄 이상이며 1000줄은 넘지 않는다.</p>
24+
25+
### 출력
26+
27+
<p>꿍 협회가 만들 수 있는 팀 중 가장 큰 능력치를 갖는 팀의 능력치를 출력한다.</p>
28+
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import Foundation
2+
3+
let MAX = 15
4+
let NEG = -1_000_000_000
5+
6+
var dp = Array(
7+
repeating: Array(repeating: NEG, count: MAX + 1),
8+
count: MAX + 1
9+
)
10+
11+
dp[0][0] = 0
12+
13+
while let line = readLine() {
14+
let parts = line.split(separator: " ").map { Int($0)! }
15+
if parts.count != 2 { continue }
16+
17+
let white = parts[0]
18+
let black = parts[1]
19+
20+
var next = dp
21+
22+
for w in 0...MAX {
23+
for b in 0...MAX {
24+
let cur = dp[w][b]
25+
if cur == NEG { continue }
26+
27+
if w + 1 <= MAX {
28+
next[w + 1][b] = max(next[w + 1][b], cur + white)
29+
}
30+
31+
if b + 1 <= MAX {
32+
next[w][b + 1] = max(next[w][b + 1], cur + black)
33+
}
34+
}
35+
}
36+
dp = next
37+
}
38+
39+
print(dp[15][15])

0 commit comments

Comments
 (0)