2022. 11. 7. 12:42ใAlgorithm
๋ฐฑ์ค - ๊ณผ์ (Swift)
๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/13904
๋์ ํ์ด
์ ์๋ฅผ ์ต๋ํ์ผ๋ก ์ป๊ธฐ ์ํด์ ํฐ ์ ์๋ถํฐ ๋ฐฐ์น๋ฅผ ํ๋ ๊ฒ ๊ฐ์ฅ ๊ทธ๋ฆฌ๋ํ ์ ๊ทผ์ด๋ค.
์ฌ๊ธฐ์ ๊ด๊ฑด์ ๋ง๊ฐ๊ธฐํ์ ๊ณ ๋ คํด์ ํฐ ์ ์๋ฅผ ๋ฐฐ์นํ๋ ๊ฒ์ธ๋ฐ, ์ด๋ ๋ฐฉ๋ฌธํ์๋ฅผ ํตํด ํด๊ฒฐํ ์ ์๋ค.
์๋ฅผ ๋ค์ด๋ณด์.
๋ฌธ์ ์ ์์๋ฅผ ์ ์๋ณ๋ก ์ ๋ ฌํ๋ฉด ์๋์ฒ๋ผ ๋๋ค.
4 60
2 50
4 40
3 30
1 20
4 10
6 5
(4 60)์ ๋จผ์ ๋ฝ์๋ค๋ฉด ๋ง๊ฐ๊ธฐํ์ด 4์ผ์ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ฐฐ์น๋ฅผํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ 4์ผ์ ๋ฐฉ๋ฌธํ์๋ฅผ true๋ก ๋๋ค.
๋ค์ (2 50)์ 2์ผ์ด ๋ง๊ฐ๊ธฐํ์ด๋ฏ๋ก 2์ผ ์ค ์ ์ผ๋ง์ง๋ง์ธ 2์ผ(1์ผ์ ๋ฐฐ์นํ ์๋ 2์ผ์ ๋ฐฐ์นํ ์๋ ์๋ค.)์ ๋ฃ๋๋ค.
(4 40)์ 4์ผ์ด ๋ฐฉ๋ฌธ๋์ด์๊ธฐ ๋๋ฌธ์ ๋จ์ ์ผ์์ค ๊ฐ์ฅ ๋ง์ง๋ง์ธ 3์ผ์ ๋ฐฐ์น๋ฅผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ (1 20)๊ณผ (4 10)์ ๋ฐฉ๋ฌธ๋์ด์๊ธฐ ๋๋ฌธ์ ํจ์ค๊ฐ๋๊ณ (6 5)๋ 6์ผ์ด ๋ง๊ฐ๊ธฐํ์ผ์ด๋ผ๋ฉด 6์ผ์งธ์ ๋ฃ์ผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ฐฐ์น๋ฅผ ํ๊ณ ๋๋ด๋ฉด ๋๋ค.
์ด๋ ๊ฒํ๋ฉด ์ ์๊ฐ ๊ฐ์ฅ ๋ง์๊ฒ๋ค์ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ฐฐ์นํจ์ผ๋ก์จ ์ต๋๊ฐ์ ๊ตฌํ ์ ์๊ฒ ๋๋ค.
import Foundation
let n = Int(readLine()!)!
var arr = [(dueDate: Int, score: Int)]()
var visited = [Bool](repeating: false, count: 1001)
var sum = 0
for _ in 0..<n {
let input = readLine()!.components(separatedBy:" ").map{Int($0)!}
arr.append((input[0], input[1]))
}
arr.sort(by: {$0.score > $1.score})
for x in arr {
var dueDate = x.dueDate
while visited[dueDate], dueDate > 0 { //๋ง๊ฐ๊ธฐํ์ด ์ด๋ฏธ ๋ฑ๋ก๋์๋ค๋ฉด 1์ ๋นผ์ค์ ์ ๋ ๋ก
dueDate -= 1
}
if dueDate != 0 {
visited[dueDate] = true
sum += x.score
}
}
print(sum)
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - ํ์กฐ์์ด์ ๋ฆฌํ๊ณ ์ดใ ใ (Swift) (0) | 2022.11.07 |
---|---|
๋ฐฑ์ค - ๋ฑ์ ๋ฉ๊ธฐ๊ธฐ(Swift) (0) | 2022.11.07 |
๋ฐฑ์ค - ์ด์ฅ๋ ์ด๋(Swift) (0) | 2022.11.07 |
๋ฐฑ์ค - ๋ฐฐ(Swift) (0) | 2022.11.07 |
์ํ ๋ - ๋ฐฑ์ค(Swift) (0) | 2022.11.06 |