๋ฌธ์ ์ค๋ช
์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ง์ ๋๋ก์์ ์ผ์ชฝ๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก 1๋ฒ๋ถํฐ ์ฐจ๋ก๋๋ก ๋ฒํธ๊ฐ ๋ถ์ฌ์ง ๋ง์๋ค์ด ์๋ค. ๋ง์์ ์๋ ๋ฌผ๊ฑด์ ๋ฐฐ์กํ๊ธฐ ์ํ ํธ๋ญ ํ ๋๊ฐ ์๊ณ , ํธ๋ญ์ด ์๋ ๋ณธ๋ถ๋ 1๋ฒ ๋ง์ ์ผ์ชฝ์ ์๋ค. ์ด ํธ๋ญ์ ๋ณธ๋ถ์์ ์ถ๋ฐํ์ฌ 1๋ฒ ๋ง์๋ถํฐ ๋ง์ง๋ง ๋ง์๊น์ง ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ๋ฉด์ ๋ง์์ ์๋ ๋ฌผ๊ฑด์ ๋ฐฐ์กํ๋ค.
๊ฐ ๋ง์์ ๋ฐฐ์กํ ๋ฌผ๊ฑด๋ค์ ๋ฐ์ค์ ๋ฃ์ด ๋ณด๋ด๋ฉฐ, ๋ณธ๋ถ์์๋ ๋ฐ์ค๋ฅผ ๋ณด๋ด๋ ๋ง์๋ฒํธ, ๋ฐ์ค๋ฅผ ๋ฐ๋ ๋ง์๋ฒํธ์ ๋ณด๋ผ ๋ฐ์ค์ ๊ฐ์๋ฅผ ์๊ณ ์๋ค. ๋ฐ์ค๋ค์ ๋ชจ๋ ํฌ๊ธฐ๊ฐ ๊ฐ๋ค. ํธ๋ญ์ ์ต๋๋ก ์ค์ ์ ์๋ ๋ฐ์ค์ ๊ฐ์, ์ฆ ํธ๋ญ์ ์ฉ๋์ด ์๋ค. ์ด ํธ๋ญ ํ๋๋ฅผ ์ด์ฉํ์ฌ ๋ค์์ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๋ฉด์ ์ต๋ํ ๋ง์ ๋ฐ์ค๋ค์ ๋ฐฐ์กํ๋ ค๊ณ ํ๋ค.
- ์กฐ๊ฑด 1: ๋ฐ์ค๋ฅผ ํธ๋ญ์ ์ค์ผ๋ฉด, ์ด ๋ฐ์ค๋ ๋ฐ๋ ๋ง์์์๋ง ๋ด๋ฆฐ๋ค.
- ์กฐ๊ฑด 2: ํธ๋ญ์ ์ง๋์จ ๋ง์๋ก ๋๋์๊ฐ์ง ์๋๋ค.
- ์กฐ๊ฑด 3: ๋ฐ์ค๋ค ์ค ์ผ๋ถ๋ง ๋ฐฐ์กํ ์๋ ์๋ค.
๋ง์์ ๊ฐ์, ํธ๋ญ์ ์ฉ๋, ๋ฐ์ค ์ ๋ณด(๋ณด๋ด๋ ๋ง์๋ฒํธ, ๋ฐ๋ ๋ง์๋ฒํธ, ๋ฐ์ค ๊ฐ์)๊ฐ ์ฃผ์ด์ง ๋, ํธ๋ญ ํ ๋๋ก ๋ฐฐ์กํ ์ ์๋ ์ต๋ ๋ฐ์ค ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋ฐ๋ ๋ง์๋ฒํธ๋ ๋ณด๋ด๋ ๋ง์๋ฒํธ๋ณด๋ค ํญ์ ํฌ๋ค.
์๋ฅผ ๋ค์ด, ํธ๋ญ ์ฉ๋์ด 40์ด๊ณ ๋ณด๋ด๋ ๋ฐ์ค๋ค์ด ๋ค์ ํ์ ๊ฐ๋ค๊ณ ํ์.
๋ณด๋ด๋ ๋ง์ | ๋ฐ๋ ๋ง์ | ๋ฐ์ค ๊ฐ์ |
1 | 2 | 10 |
1 | 3 | 20 |
1 | 4 | 30 |
2 | 3 | 10 |
2 | 4 | 20 |
3 | 4 | 20 |
์ด๋ค ๋ฐ์ค์ ๋ํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ๋ฐฐ์กํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํด ๋ณด์.
(1) 1๋ฒ ๋ง์์ ๋์ฐฉํ๋ฉด
- ๋ค์๊ณผ ๊ฐ์ด ๋ฐ์ค๋ค์ ํธ๋ญ์ ์ฃ๋๋ค. (1๋ฒ ๋ง์์์ 4๋ฒ ๋ง์๋ก ๋ณด๋ด๋ ๋ฐ์ค๋ 30๊ฐ ์ค 10๊ฐ๋ฅผ ์ฃ๋๋ค.)
๋ณด๋ด๋ ๋ง์ | ๋ฐ๋ ๋ง์ | ๋ฐ์ค ๊ฐ์ |
1 | 2 | 10 |
1 | 3 | 20 |
1 | 4 | 10 |
(2) 2๋ฒ ๋ง์์ ๋์ฐฉํ๋ฉด
- ํธ๋ญ์ ์ค๋ ค์ง ๋ฐ์ค๋ค ์ค ๋ฐ๋ ๋ง์๋ฒํธ๊ฐ 2์ธ ๋ฐ์ค 10๊ฐ๋ฅผ ๋ด๋ ค ๋ฐฐ์กํ๋ค. (์ด๋ ํธ๋ญ์ ๋จ์์๋ ๋ฐ์ค๋ 30๊ฐ๊ฐ ๋๋ค.)
- ๊ทธ๋ฆฌ๊ณ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ์ค๋ค์ ์ฃ๋๋ค. (์ด๋ ํธ๋ญ์ ์ค๋ ค ์๋ ๋ฐ์ค๋ 40๊ฐ๊ฐ ๋๋ค.)
๋ณด๋ด๋ ๋ง์๋ฐ๋ ๋ง์๋ฐ์ค ๊ฐ์
๋ณด๋ด๋ ๋ง์ | ๋ฐ๋ ๋ง์ | ๋ฐ์ค ๊ฐ์ |
2 | 3 | 10 |
(3) 3๋ฒ ๋ง์์ ๋์ฐฉํ๋ฉด
- ํธ๋ญ์ ์ค๋ ค์ง ๋ฐ์ค๋ค ์ค ๋ฐ๋ ๋ง์๋ฒํธ๊ฐ 3์ธ ๋ฐ์ค 30๊ฐ๋ฅผ ๋ด๋ ค ๋ฐฐ์กํ๋ค. (์ด๋ ํธ๋ญ์ ๋จ์์๋ ๋ฐ์ค๋ 10๊ฐ๊ฐ ๋๋ค.)
- ๊ทธ๋ฆฌ๊ณ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ์ค๋ค์ ์ฃ๋๋ค. (์ด๋ ํธ๋ญ์ ์ค๋ ค ์๋ ๋ฐ์ค๋ 30๊ฐ๊ฐ ๋๋ค.)
๋ณด๋ด๋ ๋ง์ | ๋ฐ๋ ๋ง์ | ๋ฐ์ค ๊ฐ์ |
3 | 4 | 20 |
(4) 4๋ฒ ๋ง์์ ๋์ฐฉํ๋ฉด
- ๋ฐ๋ ๋ง์๋ฒํธ๊ฐ 4์ธ ๋ฐ์ค 30๊ฐ๋ฅผ ๋ด๋ ค ๋ฐฐ์กํ๋ค
์์ ๊ฐ์ด ๋ฐฐ์กํ๋ฉด ๋ฐฐ์กํ ์ ์ฒด ๋ฐ์ค๋ 70๊ฐ์ด๋ค. ์ด๋ ๋ฐฐ์กํ ์ ์๋ ์ต๋ ๋ฐ์ค ๊ฐ์์ด๋ค.
์ ๋ ฅ
์ ๋ ฅ์ ์ฒซ ์ค์ ๋ง์ ์ N๊ณผ ํธ๋ญ์ ์ฉ๋ C๊ฐ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. N์ 2์ด์ 2,000์ดํ ์ ์์ด๊ณ , C๋ 1์ด์ 10,000์ดํ ์ ์์ด๋ค. ๋ค์ ์ค์, ๋ณด๋ด๋ ๋ฐ์ค ์ ๋ณด์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค. M์ 1์ด์ 10,000์ดํ ์ ์์ด๋ค. ๋ค์ M๊ฐ์ ๊ฐ ์ค์ ๋ฐ์ค๋ฅผ ๋ณด๋ด๋ ๋ง์๋ฒํธ, ๋ฐ์ค๋ฅผ ๋ฐ๋ ๋ง์๋ฒํธ, ๋ณด๋ด๋ ๋ฐ์ค ๊ฐ์(1์ด์ 10,000์ดํ ์ ์)๋ฅผ ๋ํ๋ด๋ ์์ ์ ์๊ฐ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. ๋ฐ์ค๋ฅผ ๋ฐ๋ ๋ง์๋ฒํธ๋ ๋ณด๋ด๋ ๋ง์๋ฒํธ๋ณด๋ค ํฌ๋ค.
์ถ๋ ฅ
ํธ๋ญ ํ ๋๋ก ๋ฐฐ์กํ ์ ์๋ ์ต๋ ๋ฐ์ค ์๋ฅผ ํ ์ค์ ์ถ๋ ฅํ๋ค.
์ ์ถ๋ ฅ ์์
์ ๋ ฅ
6 60
5
1 2 30
2 5 70
5 6 60
3 4 40
1 6 40
์ถ๋ ฅ
150
๋ด ๋ฌธ์ ํ์ด
import Foundation
let info = readLine()!.split(separator: " ").map({Int(String($0))!}) // [๋ง์ ๊ฐ์, ํธ๋ญ ์ฉ๋]
let count = Int(readLine()!)!
var nums = [[Int]]() // [์ถ๋ฐ ๋ง์, ๋์ฐฉ ๋ง์, ํ๋ฐฐ ๊ฐ์]
var town = Array(repeating: 0, count: info[0]) // ๋ง์ ๋ณ ์ ์ฌ์ค์ธ ํ๋ฐฐ ๊ฐ์
var answer = 0
for _ in 0..<count { nums.append(readLine()!.split(separator: " ").map({Int(String($0))!})) }
nums.sort {
if $0[1] != $1[1] { return $0[1] < $1[1] }
else { return $0[0] < $1[0] }
}
for i in 0..<count {
let max = (town[nums[i][0]-1..<nums[i][1]-1]).max()!
if max < info[1] {
let add = nums[i][2] + max > info[1] ? info[1] - max : nums[i][2]
answer += add // ๋ํด์ง๋ ํ๋ฐฐ ๊ฐ์๋ฅผ answer์ ์ถ๊ฐ
for j in nums[i][0]-1...nums[i][1]-2 {
town[j] += add // ํ์ฌ ํ๋ฐฐ๊ฐ ์ง๋๊ฐ๋ ๋ง์๋ค์ add๋งํผ์ ํ๋ฐฐ ๊ฐ์๋ฅผ ์ถ๊ฐ
}
}
}
print(answer)
๐ ๋์ฐฉํ๋ ๋ง์ ๋ฒํธ๊ฐ ์์ ํ๋ฐฐ๋ถํฐ ์ ๋ ฌํด์ ๋ง์๋ณ๋ก ํธ๋ญ์ด ์ง๋ ๋ ์ ์ฌ๋ ์์ ์ฒดํฌํด์ฃผ์๋ค.
๋นจ๋ฆฌ ๋์ฐฉํ๋ ๋ง์์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ ๊ฒ์ด ์ด ๋ฌธ์ ์ ํต์ฌ!
- ๋จผ์ ๋์ฐฉํ๋ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก nums ๋ฐฐ์ด์ ์ ๋ ฌํ๊ณ ,
๋์ฐฉ ์๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ ์ถ๋ฐ ์๊ฐ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค. - for๋ฌธ์ ์์ ์
์ถ๋ ฅ ์์ ๋ก ์ค๋ช
ํ ๊ทธ๋ฆผ์ผ๋ก ์ฒจ๋ถํ๋ค.
๐ก ํผ๋๋ฐฑ
- ์ด๋ป๊ฒ ํ์ด์ผํ ์ง ๊ณ ๋ฏผํ๋๋ฐ ์๊ฐ์ด ์ข ๊ฑธ๋ฆฐ ๋ฌธ์ ์์ง๋ง,
town ๋ฐฐ์ด์ ๋ง๋ค์ด์ฃผ๊ณ ๋์ฐฉํ๋ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ๋ฐฐ๋ฅผ ์ ์ฌํด์ฃผ์ด์ผ ํ๋ ๊ฒ์
ํ์ ํ๋๊น ๊ธ๋ฐฉ ํ ์ ์์๋ค.
๋ฌธ์
'3๏ธโฃ Swift > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift Algorithm] ์ค ์ธ์ฐ๊ธฐ BOJ #7570 (1) | 2021.08.29 |
---|---|
[Swift Algorithm] ์์๋ฃ๊ธฐ BOJ #1965 (0) | 2021.08.28 |
[Swift Algorithm] ์นด๋ ํฉ์ฒด ๋์ด BOJ #15903 (0) | 2021.08.22 |
[Swift Algorithm] ๋ฉํฐํญ ์ค์ผ์ค๋ง BOJ #1700 (0) | 2021.08.20 |
[Swift Algorithm] ์ฃผ์ ์ BOJ #13305 (0) | 2021.08.19 |
๋๊ธ