https://www.acmicpc.net/problem/20207
๊ณจ๋5
๋ฌธ์
๋ฌธ์ ํ์ด
์ฐ์๋ ๊ตฌ๊ฐ์ ๊ฐ๋ก์ ์ธ๋ก๋ฅผ ๊ตฌํด์ผ ํ๋ค.
๊ทธ๋ฆผ์ ํตํด ๋ณด๋ ๊ฒ ๋น ๋ฅผ ๊ฒ ๊ฐ์ ๊ทธ๋ ค๋ณด์๋ค.
๋จผ์ ๊ฐ ์ผ์์ ํด๋นํ๋ ์ค์ผ์ค์ ๊ฐ์๋ฅผ days ๋ฐฐ์ด์ ์ ์ฅํ๋ค.
width๋ 0์ด ๋์ค์ง ์๋ ์ฐ์๋ ๊ฐ์๋ฅผ ๊ตฌํ๋ฉด ๋๊ณ height๋ ํด๋น ๊ตฌ๊ฐ์ ๊ฐ์ฅ max๊ฐ์ด ๋์ด๊ฐ ๋๋ค.
์ฝ๋
import Foundation
let n = Int(readLine()!)!
var schedules: [(start: Int, end: Int)] = []
for _ in 0..<n {
let input = readLine()!.split(separator: " ").map {Int(String($0))!}
let start = input[0]; let end = input[1]
schedules.append((start, end))
}
var days: [Int] = Array(repeating: 0, count: 367) // 1์ผ ~ 365์ผ์ ๋ํด ๊ฐ ์ค์ผ์ค์ ๊ฐ์๋ฅผ ๊ฐ๋๋ค.
for schedule in schedules {
// ex) 2~4์ผ ์ค์ผ์ค์ด๋ฉด 2,3,4 ์ธ๋ฑ์ค์ +1
for i in stride(from: schedule.start, through: schedule.end, by: 1) {
days[i] += 1
}
}
var width = 0
var height = 0
var answer = 0
for i in 1..<days.count {
let day = days[i]
// 0์ด ์๋ ์ฐ์๋ ๊ตฌ๊ฐ์ width๋ฅผ ๊ตฌํ๋ค.
if day > 0 {
width += 1
height = max(height, day) // ๋์ด๋ ํด๋น ๊ตฌ๊ฐ์ ์ต๋ ์ค์ผ์ค ๊ฐ์
}
// ์ฐ์๋ ๊ตฌ๊ฐ์ด ๋๋ฌ์ผ๋ฉด
else if day == 0 {
answer += width*height
width = 0
height = 0
}
}
print(answer)
ํ๊ธฐ
์ ๋ ฌํ๊ณ ๋ธ๋ญ๋ค์ ์ ์ฅํ๊ณ ๋ถ์ด๊ณ ... ๋งค์ฐ ๋ณต์กํ ๋ฐฉ๋ฒ๋ง ์๊ฐํด๋ด๋ค ๊ฐ๋ก๋ ๊ตฌํ ์ ์๋๋ฐ ๋์ด๋ ๊ตฌํ๊ธฐ๊ฐ ๊น๋ค๋ก์ ๋ณด์๋ค.
but ์๊ฐ๋ณด๋ค ๊ฐ๋จํ ์์ด๋์ด๋ก ํ ์ ์์ด ์ ๋ฆฌํด ๋ณด์๋ค.
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค 258707] ์นด์นด์ค ๊ฒจ์ธ ์ธํด์ญ, n + 1 ์นด๋๊ฒ์, swift (0) | 2024.01.10 |
---|---|
[๋ฐฑ์ค 20057] ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋ - swift (0) | 2023.11.16 |
[ํ๋ก๊ทธ๋๋จธ์ค 92342] ์๊ถ ๋ํ swift (1) | 2023.11.08 |
[ํ๋ก๊ทธ๋๋จธ์ค 92341] ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ swift (1) | 2023.11.03 |
[ํ๋ก๊ทธ๋๋จธ์ค 92335] k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ swift (0) | 2023.10.30 |