๋ฌธ์ ์ค๋ช
์ค๋์ ๊ณต์ฃผ๋์ด ํ์ด๋ ๊ฒฝ์ฌ์ค๋ฌ์ด ๋ ์ด๋ค. ์์ ์ด ๋ ์ ๊ธฐ๋ ํ๊ธฐ ์ํด ๋ ๊ฝ์ด ํผ์ด์๋ ์์ ์ ์์ ๋ง๋ค๊ธฐ๋ก ๊ฒฐ์ ํ๋ค.
์ด N๊ฐ์ ๊ฝ์ด ์๋ ๋ฐ, ๊ฝ์ ๋ชจ๋ ๊ฐ์ ํด์ ํผ์ด์ ๊ฐ์ ํด์ ์ง๋ค. ํ๋์ ๊ฝ์ ํผ๋ ๋ ๊ณผ ์ง๋ ๋ ์ด ์ ํด์ ธ ์๋ค. ์๋ฅผ ๋ค์ด, 5์ 8์ผ ํผ์ด์ 6์ 13์ผ ์ง๋ ๊ฝ์ 5์ 8์ผ๋ถํฐ 6์ 12์ผ๊น์ง๋ ๊ฝ์ด ํผ์ด ์๊ณ , 6์ 13์ผ์ ํฌํจํ์ฌ ์ดํ๋ก๋ ๊ฝ์ ๋ณผ ์ ์๋ค๋ ์๋ฏธ์ด๋ค. (์ฌํด๋ 4, 6, 9, 11์์ 30์ผ๊น์ง ์๊ณ , 1, 3, 5, 7, 8, 10, 12์์ 31์ผ๊น์ง ์์ผ๋ฉฐ, 2์์ 28์ผ๊น์ง๋ง ์๋ค.)
์ด๋ฌํ N๊ฐ์ ๊ฝ๋ค ์ค์์ ๋ค์์ ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฝ๋ค์ ์ ํํ๊ณ ์ถ๋ค.
- ๊ณต์ฃผ๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ๊ณ์ ์ธ 3์ 1์ผ๋ถํฐ 11์ 30์ผ๊น์ง ๋งค์ผ ๊ฝ์ด ํ ๊ฐ์ง ์ด์ ํผ์ด ์๋๋ก ํ๋ค.
- ์ ์์ด ๋์ง ์์ผ๋ฏ๋ก ์ ์์ ์ฌ๋ ๊ฝ๋ค์ ์๋ฅผ ๊ฐ๋ฅํ ์ ๊ฒ ํ๋ค.
N๊ฐ์ ๊ฝ๋ค ์ค์์ ์์ ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋, ์ฆ 3์ 1์ผ๋ถํฐ 11์ 30์ผ๊น์ง ๋งค์ผ ๊ฝ์ด ํ ๊ฐ์ง ์ด์ ํผ์ด ์๋๋ก ๊ฝ๋ค์ ์ ํํ ๋, ์ ํํ ๊ฝ๋ค์ ์ต์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ๊ฝ๋ค์ ์ด ๊ฐ์ N (1 ≤ N ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ์ ์ค์๋ ๊ฐ ๊ฝ์ด ํผ๋ ๋ ์ง์ ์ง๋ ๋ ์ง๊ฐ ์ฃผ์ด์ง๋ค. ํ๋์ ๋ ์ง๋ ์๊ณผ ์ผ์ ๋ํ๋ด๋ ๋ ์ซ์๋ก ํํ๋๋ค. ์๋ฅผ ๋ค์ด์, 3 8 7 31์ ๊ฝ์ด 3์ 8์ผ์ ํผ์ด์ 7์ 31์ผ์ ์ง๋ค๋ ๊ฒ์ ๋ํ๋ธ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ ํํ ๊ฝ๋ค์ ์ต์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฝ๋ค์ ์ ํํ ์ ์๋ค๋ฉด 0์ ์ถ๋ ฅํ๋ค.
์ ์ถ๋ ฅ ์์
์ ๋ ฅ
10
2 15 3 23
4 12 6 5
5 2 5 31
9 14 12 24
6 15 9 3
6 3 6 15
2 28 4 25
6 15 9 27
10 5 12 31
7 14 9 1
์ถ๋ ฅ
5
๋ด ๋ฌธ์ ํ์ด
import Foundation
let n = Int(readLine()!)!
var flowers = [[Int]]() // [[ํผ๋ ์๊ธฐ, ์ง๋ ์๊ธฐ]]
for _ in 0..<n {
let tmp = readLine()!.split(separator: " ").map{Int(String($0))!}
let s = tmp[0] * 100 + tmp[1] // ํผ๋ ์๊ธฐ
let e = tmp[2] * 100 + tmp[3] // ์ง๋ ์๊ธฐ
if e >= 301 {
if s <= 301 { flowers.append([301, e]) }
else { flowers.append([s, e]) }
}
}
flowers.sort(by: {$0[0] < $1[0]}) // ํผ๋ ์๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
var start = 301 // ๊ฝ์ด ํผ์ด์ผ ํ๋ ์๊ธฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ณ์
var max = 0 // ์ ํํ ๊ฝ๋ค ์ค ๊ฐ์ฅ ๋ฆ๊ฒ ์ง๋ ์๊ธฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ณ์
var answer = 0 // ์ ํํ ๊ฝ์ ๊ฐ์๋ฅผ ์นด์ดํธํ๋ ๋ณ์
for i in 0..<n {
// ์
๋ ฅ๋ฐ์ ๊ฝ์ ๊ฐ์๊ฐ 1๊ฐ ์ดํ์ผ ๊ฒฝ์ฐ
if flowers.count <= 1 {
if flowers.count == 0 { break }
else {
if flowers[0][0] == 301 && flowers[0][1] > 1130 { answer = 1; break }
else { break }
}
}
// ๊ฝ์ด ํผ๋ ์๊ธฐ๊ฐ start ์ด์ ์ผ ๊ฒฝ์ฐ
if flowers[i][0] <= start {
if flowers[i][1] > max { max = flowers[i][1] }
// ๋ง์ง๋ง ๋ฐ๋ณต์ผ ๊ฒฝ์ฐ
if i == n-1 {
if max > 1130 { answer += 1; break }
else { answer = 0; break }
}
// ๋ค์ ๊ฝ์ ์์ ์๊ธฐ๊ฐ start ์ดํ์ผ ๊ฒฝ์ฐ ์ํ๋์ด์ผ ํ ์
๋ฐ์ดํธ
else if flowers[i+1][0] > start {
answer += 1
start = max
if start > 1130 { break }
}
}
// ๊ฝ์ด ํผ๋ ์๊ธฐ๊ฐ start ์ดํ์ผ ๊ฒฝ์ฐ
else { answer = 0; break }
}
print(answer)
๐ ์ด ๋ฌธ์ ๋ ์๊ฐํด์ค์ผํ ์์ธ๋ ๋ง์๋ฐ ์ผ ๋จ์์ ๋ ์ง๊ฐ ๊ฐ์ ๋์ด์๋ค๋ณด๋ ๋ ํ๋ ๋ฌธ์ ์๋ ๊ฒ ๊ฐ๋ค.
๋ฐ๋ผ์ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ ๋์ฑ๋ ์ ํํ! ํ์ํ ํ์ด ๊ณผ์ ๊ณผ ์์ธ๋ฅผ ์ ๋ฆฌํด๋ณด์.
(์ฐ์ , ๋๋ ๋ ์ง๋ค์ ๋์๊ด๊ณ๋ฅผ ์ฝ๊ฒํ๊ธฐ ์ํด 3์ 1์ผ์ 301, 12์ 1์ผ์ 1201. ์ด๋ฐ ์์ผ๋ก [์*100 + ์ผ]์ ์ฐ์ฐ์ ํตํด ์ฌ์ ๋ฆฝํ๋ค๋ ๊ฒ์ ๋ช ์ํ๋ค.)
- ๋๋๋ ๋ ์ด 301 ์ดํ์ธ ๊ฝ๋ค์ ์ ๋ ฅ๋ฐ์ง ์๋๋ค. (์ ํํ๋, ๋ฐฐ์ด์ ์ถ๊ฐํ์ง ์๋๋ค.)
- 1์ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ 301๋ณด๋ค ํผ๋ ์๊ธฐ๊ฐ ๋น ๋ฅธ ๊ฝ๋ค์ ์์ ์๊ธฐ๋ฅผ 301๋ก ๋ฐ๊ฟ์ค๋ค.
- ๊ฝ์ด ํผ๋ ์๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฝ ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค.
- ํผ๋ ์๊ธฐ๊ฐ 301์ธ ๊ฝ๋ถํฐ ๊ฒ์, 301์ ํผ๋ ๊ฝ ์ค ์ง๋ ์๊ธฐ๊ฐ ๊ฐ์ฅ ๋ฆ๋ ๊ฝ์ ์ ํํ๋ค. (์นด์ดํธ)
- 4๋ฒ์์ ์ ํํ ๊ฝ์ ์ง๋ ์๊ธฐ๋ฅผ ๋ค์ ์์ํ๋ ์๊ธฐ๋ก ์ ์ฅํ๋ค. (๋ง์ฝ ๊ทธ ๋ ์ด 1201 ์ด์์ด๋ฉด ๋ฐ๋ก ๋!)
- 3, 4, 5 ๋ฐ๋ณต
๋ด๊ฐ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์ ๋ฆฌํ๋ ๋ ธํธ๋ฅผ ๊ทธ๋๋ก ์ฎ๊ฒจ์๋ค.
์ด๋ ๊ฒ ํ์ด ๊ณผ์ ์ ์ ๋ฆฌํ๋ค๋ฉด ์ด์ ์ฝ๋๋ฅผ ์์ธํ ๋ณด์.
- ์ฒซ ๋ฒ์งธ for๋ฌธ์ ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ๊ณผ์ ์ ๊ตฌํํ ๋ถ๋ถ์ด๋ค.
ํผ๋ ์๊ธฐ์ ์ง๋ ์๊ธฐ ๋ชจ๋ ์์์ ๋งํ ๋ฐฉ๋ฒ์ผ๋ก ์ฐ์ฐํ์ฌ ๋ฐ๊ฟ ๊ฐ๊ฐ s, e ๋ณ์์ ๋ด์๊ณ
์ง๋ ์๊ธฐ๊ฐ 301 ์ด์ ์ผ ๊ฒฝ์ฐ๋ ์์ ๋ฐฐ์ด์ ์ถ๊ฐํ์ง ์์๋ค.
์ง๋ ์๊ธฐ๊ฐ 301 ์ดํ์ผ ๊ฒฝ์ฐ์๋, ๋ง์ฝ ํผ๋ ์๊ธฐ๊ฐ 301 ์ด์ ์ธ ๊ฝ์ ํผ๋ ์๊ธฐ๋ฅผ 301๋ก ๋ฐ๊ฟ ์ถ๊ฐํ๊ณ
ํผ๋ ์๊ธฐ๊ฐ 301 ์ดํ์ธ ๊ฝ์ ๋ฐ๋ก ๋ฐฐ์ด์ ์ถ๊ฐํ๋ค. - ์์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ ๊ฝ๋ค์ ๋ฐฐ์ด flowers๋ฅผ ํผ๋ ์๊ธฐ ๊ธฐ์ค ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค.
- ์ฐ์ 301๋ถํฐ ๊ฝ์ด ํผ๋ ์๊ธฐ๋ฅผ ๊ฒ์ฌํ๊ธฐ ์ํด start ๋ณ์๋ 301๋ก ์ด๊ธฐํํ๋ค.
- ๋ ๋ฒ์งธ for๋ฌธ์ ์ ๋ ฌ๋ flowers ๋ฐฐ์ด์ ์ฒ์๋ถํฐ ๊ฒ์ฌํ๋๋ฐ,
๋ง์ฝ flowers ๋ฐฐ์ด์ด 1 ์ดํ๋ผ๋ฉด ๊ตณ์ด ๋ฐ๋ณตํ ํ์ ์๊ธฐ๋๋ฌธ์ ๋ฐ๋ก ์ฒ๋ฆฌํ๋ค. - flowers ๋ฐฐ์ด์ด 1 ์ดํ์ผ ๊ฒฝ์ฐ, ์ฐ์ ํฌ๊ธฐ๊ฐ 0์ผ๋๋ answer๋ฅผ 0์ผ๋ก ๋ง๋ฌด๋ฆฌํ์ฌ ๋ฐ๋ณต ์ข
๋ฃํ๊ณ
ํฌ๊ธฐ๊ฐ 1์ผ๋๋ ํผ๋ ์๊ธฐ๊ฐ 301๋ถํฐ 1130์ ๋ชจ๋ ์ฑ์ฐ๋์ง๋ฅผ ํ์ธํ์ฌ ๋ง๋ค๋ฉด answer์ 1๋ก
๋ฐ๊ฟ์ค ํ์ ๋ฐ๋ณต ์ข ๋ฃ, ๋ชจ๋ ์ฑ์์ฃผ์ง ์๋๋ค๋ฉด answer๊ฐ 0์ธ์ฑ๋ก ๋ฐ๋ณต ์ข ๋ฃํด์ฃผ์๋ค. - flowers ๋ฐฐ์ด์ด 2 ์ด์์ผ ๊ฒฝ์ฐ์๋ ๋ค์ if ์กฐ๊ฑด์ ์คํํ ์ ์๋๋ฐ,
flowers ๋ฐฐ์ด์ i ๋ฒ์งธ ๊ฝ ํผ๋ ์๊ธฐ๊ฐ start ์ด์ ์ด์ด์ผ ๋นํ์์ด ๊ฝ์ด ํผ์ด์์ ์ ์๋ค.
๋ฐ๋ผ์ ๊ทธ ์ฌ๋ถ๋ฅผ ํ์ธํด์ฃผ๋๋ฐ, start ์ด์ ์ด ๋ง๋ค๋ฉด ํด๋น ๊ฝ์ ์ง๋ ์๊ธฐ์ max๋ฅผ ๋น๊ตํด์ค๋ค.
๋ง์ฝ max๋ณด๋ค ๋ฆ๊ฒ ์ง๋ค๋ฉด max๋ฅผ ํด๋น ๊ฝ์ ์ง๋ ์๊ธฐ๋ก ์ ๋ฐ์ดํธํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ๋ฐ๋ณต์ผ๋ก ๋์ด๊ฐ๊ธฐ ์ i+1 ๋ฒ์งธ ๊ฝ์ ํผ๋ ์๊ธฐ๋ฅผ ํ์ธํด์ฃผ๋๋ฐ,
ํ์ธํ์ฌ ํ์ฌ์ start๋ณด๋ค ํฌ๋ค๋ฉด ์นด์ดํธ, start๋ max๋ก ์ ๋ฐ์ดํธํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋ start๊ฐ ํน์ 1130๋ณด๋ค ํฌ๋ค๋ฉด ๋์ด์ ๋ฐ๋ณตํ ํ์๊ฐ ์์ผ๋ฏ๋ก ๋ฐ๋ก ์ข ๋ฃํ๋ค. - ๊ทธ๋ฆฌ๊ณ ์ด ๋ฐ๋ณต๋ฌธ์์๋ ๋ง์ง๋ง ๋ฐ๋ณต์ผ ๊ฒฝ์ฐ ์ถ๊ฐ๋ก ํ์ธํด์ฃผ์ด์ผ ํ ์ ์ด ์๋๋ฐ,
max๊ฐ 1130๋ณด๋ค ํฐ์ง ์ฒดํฌํด์ผํ๋ค. 1130๋ณด๋ค ํฌ๋ค๋ฉด ๋ชจ๋ ๊ธฐ๊ฐ์ ์ฑ์ ๋ค๋ ๋ป์ด๋ฏ๋ก
์นด์ดํธํด์ค ํ ๋ฐ๋ณต์ ์ข ๋ฃํด์ฃผ๋ฉด ๋๊ณ , ๊ทธ๋ ์ง ์๋ค๋ฉด answer๋ฅผ 0์ผ๋ก ์ด๊ธฐํํ์ฌ ์ข ๋ฃํ๋ค. - ๋ง์ง๋ง์ผ๋ก, ๊ฝ์ด ํผ๋ ์๊ธฐ๊ฐ start๋ณด๋ค ํฌ๋ค๋ฉด ์ค๊ฐ์ ๋น๋ ๊ธฐ๊ฐ์ด ์๊ธด๋ค๋ ์๋ฏธ์ด๋ฏ๋ก
answer๋ฅผ 0์ผ๋ก ์ด๊ธฐํํ ํ breakํด์ค๋ค.
๐ก ํผ๋๋ฐฑ
- ์ฒ์์ ๋ฌธ์ ๊ฐ ๋๋ฌด ์ด๋ ต๊ฒ ๋ค๊ฐ์์,, ํ๋ฃจ์ข
์ผ ๋ชปํ์๋๋ฐ
๋ฉฐ์น ๋ค ๋ค์ ๋ฌธ์ ๋ฅผ ๋ณด๋ ์์ธ๋ง ์ ํํ ์ ๋ฆฌํด์ฃผ๋ฉด ๋๋ ๋ฌธ์ ์๋ค. - ๋ ์ง๋ฅผ ๊ทธ๋๋ก ๋ฐ์ง ์๊ณ 1130 ์ด๋ฐ ์์ผ๋ก ํํํด์ค ๊ฒ์ด ํฌ์ธํธ์๋ ๊ฒ ๊ฐ๊ณ ,
์์ผ๋ก ๊ทธ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ์ ํ ๋๋ ํ์ํ ๋ถ๋ถ์ ์ ๊ณจ๋ผ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํ ๊ฒ ๊ฐ๋ค.
๋ฌธ์
'3๏ธโฃ Swift > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift Algorithm] ๊ทธ๋ฆผ BOJ #1926 (0) | 2021.09.30 |
---|---|
[Swift Algorithm] ์ฃผ์ BOJ #11501 (0) | 2021.09.02 |
[Swift Algorithm] ์ค ์ธ์ฐ๊ธฐ BOJ #7570 (1) | 2021.08.29 |
[Swift Algorithm] ์์๋ฃ๊ธฐ BOJ #1965 (0) | 2021.08.28 |
[Swift Algorithm] ํ๋ฐฐ BOJ #8980 (0) | 2021.08.22 |
๋๊ธ