์ด๊ฒ์ ๊ฒ ์ฑ์ฉ ์ด์ ๋๋ฌธ์ ๋ฌธ์ ํ์ด๋ ์ด ๊ณต์ฃผ๋๋ฌธ์ ๋ 4์๋ง์ ํ๊ธฐ ์์ํ์ง๋ง ใ ใ ใ ใ ํ์ด๋ฅผ ์๋ฃํ ์์ ์ ์ฝ 3์ฃผ ํ์ธ 5์ ์ค์,,,, (์ ๊ณต์ฃผ๋ ์ง์ง ๋ฟ์ ๋ฒ๋ฆฌ๋๊ฒ ๋ชฉํ์๋๋ฐ ๋๋์ด ๋ฟ์ ์ ์์ ๋ฒ๋ฆด ์ ์์๋ค.. ๋ค์ ์ํ์ด ์ด๊ฑฐ)
์์์์ฐ๊ณ ์ต์ข ๋ฉด์ ๋ณด๊ณ ์ด๊ฒ์ ๊ฒ ํ๋๋ผ ์ฝ๋ฉํ ์คํธ์ ์ง์คํ์ง ๋ชปํ๋ค. ๋ค์ ํธ๋๊น ์ฌ๋ฐ๋ค? ๊ทธ๋ฆฌ๊ณ ํ์คํ refreshํ๊ณ ๋ค์ ๋ฌธ์ ๋ฅผ ์ ํ๋๊น ๋ ์ํ๋ฆฌ๋ ๊ธฐ๋ถ์ด๋ค. ์์ผ๋ก ๋ค์ ํ์ดํ ํ์!!
โซ๏ธ ๋ฌธ์
https://www.acmicpc.net/problem/2457
โซ๏ธ ๋์ ํ์ด
์,, ์ง์ง ์ด๋ ต๋ค. ์ด๋ ค์ด ์ด์ ๋, ๋ฌธ์ ๋ฅผ ๋ณด์๋ง์ ๊ทธ๋ฆฌ๋์ธ ๊ฒ์ ์์์ง๋ง, ๋ฒ์์ค์ ํด์ ์ฝ๋๋ก๊ตฌํํ๋๊ฒ ๊ฐ์ด๋ ต๋ค. ๋ฌธ์ ๋, ๊ทธ๋ฆฌ๋์์ ๊ฐ์ฅ ์ ๋ช
ํ 'ํ์์ค ๋ฐฐ์ '๋ฌธ์ ์ ๋น์ทํ๋ค. ์๋๋ฉด, ํ๋ก๊ทธ๋๋จธ์ค์์ ํ์ด๋ดค๋ '๋จ์์นด๋ฉ๋ผ'๋ฌธ์ ์ ๋น์ทํ๋ค๊ณ ๋๊ผ๋ค.
๋จ์์นด๋ฉ๋ผ์ ๋ ๋น์ทํ๋ค๊ณ ๋๋ ์ด์ ๋, ๋จ์์นด๋ฉ๋ผ ๋ฌธ์ ๋ '๋ค์ด๊ฐ๋ ์๊ฐ' ๊ณผ '๋์ค๋์๊ฐ'์ด ๋ฐ๋ก ์ฃผ์ด์ก๊ณ , ์ด ๋ฒ์๋ฅผ ๋ชจ๋ ๊ณ ๋ คํด์ผ๋ง ๋ต์ ์ฐพ์ ์ ์์๋ค. (๋ ๊ฐ์ ๋ฌธ์ ๋ ์๋์์ ๋ณผ ์ ์๋ค.)
https://didu-story.tistory.com/394
https://didu-story.tistory.com/410
๋ญ ์ด์จ๋ , ๊ณต์ฃผ๋์ด ์ ์์ ๊ด๋ฆฌํ๋๋ฐ 3์1์ผ๋ถํฐ 11์30์ผ๊น์ง๋ ๋ฌด์กฐ๊ฑด ๊ฝ์ด ํ๊ฐ ์ด์ ํผ์ด์ ธ ์์ด์ผํ๋ค. ๊ทธ๋๊น, ์ฃผ์ด์ง ๋ฒ์๊ฐ ๊ฒน์น๋ ๊ฒ์ ์ต์ํํ๋ฉด์ ๊ฝ์ ์ ํํด์ฃผ์ด์ผํ๋ค.
1. ์ ๋ ฌํด์ฃผ๊ธฐ
์ฐ์ , ๊ทธ๋ฆฌ๋์์ ๊ฐ์ฅ ์ ํฉํ ํด๋ฅผ ๋จผ์ ์ฐพ์์ฃผ๋ฉด์ ํด๋ฅผ ์ฐพ๊ธฐ ์ํด์ ์ ๋ ฌ์ด ํ์ํ๋ค. ๊ณต์ฃผ๋์ ์ ์์ ์๋ ๊ฝ๋ค์ ๋จผ์ ์ ๋ฆฌํด์ค๊ฒ์ด๋ค. ๋จ, ๋ง์ฝ ๊ฝ์ด ํผ๋ ๋ ์ง๊ฐ ๊ฐ๋ค๋ฉด, ๊ฝ์ด ๋ ์ค๋ ํผ์ด์๋ ์์ด๋ฅผ ๋ ์์ผ๋ก ์ ๋ ฌํด์ค์ผ๋ก์จ, ๋์ค์ ์ ํํ๊ธฐ ํธํ๊ฒ ํด์ฃผ์.
2. ๋ฒ์ ๋น๊ตํ๊ธฐ ํธํ๋๋ก ๋ ์ง๋ฅผ ์ซ์๊ฐ๋ ์ผ๋ก ์๊ฐํด์ฃผ์.
input์ ๋ชจ๋ ์ซ์๋ก ์ฃผ์ด์ง์ง๋ง, ์ฌ์ค ์ด๊ฒ์ '๋ ์ง'๋ฅผ ์๋ฏธํ๋ค. ๋ ์ง๋ฅผ ๋น๊ตํ๋ ์ผ์ด์ฝ์ง ์์ง๋ง ๊ทธ๋ฅ ์ซ์๋ก ์๊ฐํ๊ณ ๋น๊ตํด์ฃผ๋ฉด๋๋ค. 0000 ๋ค์๋ฆฌ๋ก ๋ง๋ค์ด์ฃผ์ด์ 1์1์ผ์ 101, 12์ 21์ผ์ 1221์ซ์๋ก ๋ง๋ค์ด์ฃผ๊ณ , ์ด ์ซ์๋ค์ ๋น๊ตํ๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๋ ์ง๋น๊ต๊ฐ ๊ฐ๋ฅํด์ง๋ค. ์ด ๋ถ๋ถ๋ ์ด ๋ฌธ์ ์ ํต์ฌ ํฌ์ธํธ๋ผ๊ณ ์๊ฐํ๋ค.
3. ๋ด๊ฐ ๋ณด๊ธฐ ํธํ๋๋ก, flowers๋ฐฐ์ด ๋ด๋ถ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฝ๋ค๋ง ๋ฃ์ด์ฃผ์.
๊ณต์ฃผ๋์ 3์1์ผ๋ถํฐ 11์30์ผ๊น์ง ๊ฝ์ด ํผ์ด์๊ธธ ๋ฐ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก, 1์~3์๊น์ง ํผ์ด์๋ ๊ฝ์ ์ด์ฐจํผ ์ ๋ต์ ํฌํจํ ์ ์๊ณ , 3์ ์ดํ์ ์ง๋๋ผ๋ 3์ ์ด์ ์ ํ ๊ฝ๋ค์ ๊ทธ๋ฅ ํ ๋ ์ง๋ฅผ 3์1์ผ๋ก ์ฌ๊ฒจ๋ ๋ฌด๋ฐฉํ๋ค.
์ด ์ธ ๊ณผ์ ์ input์ ๋ฐ๊ณ ๋์ ๋ฐ๋ก๋ฐ๋ก ์ฒ๋ฆฌํด์ค ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ค์์,,, ์ด์ ๋น๊ตํ๋๊ฒ ๋ฌธ์ ๋ฐ...
๋น๊ตํ๋ฉด์ ์ค์ํ๊ฒ์, ์ง๊ธ ๋ง์ฝ ๊ฝ์ ์ ํํ์ ๋, ๋ค์๊ฝ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ํ์ด ๊ฐ๋ฅํ๋ฐ ๋ง์ฝ ์ง๋๋ ์ด ๋ ๋ฆ์ผ๋ฉด ๊ทธ ๊ฝ์ ์ ํํด์ฃผ์ด์ผํ๋ค. ๊ทธ๋์ ์ง์์ ์ผ๋ก ๊ฝ์ ์ ํํ๊ณ , ๊ทธ ๋ค์์๋ ๊ฝ๋ค๋ ์ถ๊ฐ๋ก ๋ด์ฃผ๋ฉด์ ์ง๋๋ ์ด ๋ ๋ฆ๋ ๊ฝ์ ์ ํํด์ฃผ์ด์ผํ๋ค. (์์ค ๋ณต์กํด ๋ฒ์จ)
max๋ผ๋ ๋ณ์์, ๊ฐ์ฅ ๋ง์ง๋ง์ผ๋ก ์ง ๊ฝ์ ๊ฝ์ด ์ง ๋ ์ง๋ฅผ ๋ฃ์ด์ค ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์๊ฐํ ๋ฐฉ์์ while๋ฌธ์ผ๋ก idx < flowers.count๋ก ๋๋ ค์ค๊ฒ์ด๊ณ , ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ์ด ๋ฃ์ด์ค๋ค.
- ๋ง์ฝ max๋ณด๋ค ๋นจ๋ฆฌ์ง๋ ๊ฝ์ continue๋ก ๋ณผ ํ์๋ ์๋ค.
- ์ง๊ธ max๋ณด๋ค ๊ฝ์ด max๋ณด๋ค ๋นจ๋ฆฌํผ๊ณ , max๋ณด๋ค ์ง๋๋ ์ด ๋๋ฆฌ๋ฉด, ๊ทธ ๊ฝ์ ์ ํํด์ผํ๋ค.
- ๊ทธ๋ฌ๋, ๊ทธ ๊ฝ ๋ค์ ํน์ ์ง๋๋ ์ด ๋ ๋จผ ๊ฝ์ด ์๋ค๋ฉด ๋ค์์๋ ๊ธฐ๊ฐ์ด ๋ ๊ธด ๊ฝ์ ์ ํํด์ผํด์, for๋ฌธ์ผ๋ก flowers ์ ๋ถ๋ฅผ ํ์ํด์ฃผ๋ฉด์ ๋ค์์๋ ๊ฝ์ ํ์ธํ๋ค.
์ด ๊ณผ์ ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ค.
์ฒซ๋ฒ์ฌ ์๋ ์ฝ๋ - ํ๋ ธ์ต๋๋ค...
import Foundation
func solution() -> Int {
let n = Int(readLine()!)!
var flowers = [(Int, Int)]()
for _ in 0..<n {
let temp = readLine()!.split(separator: " ").map{ Int($0)! }
// 1์ฐจ๋ก ์ง๋๋ ์ด 3์1์ผ ์ด์ ์ด๋ฉด ์์ flowers์ ๋ฃ์ด์ฃผ์ง๋ ์์
if temp[2]*100 + temp[3] < 301 {
continue
}
// 2์ฐจ๋ก ํผ๋ ๋ ์ด 301๋ณด๋ค ์ด์ ์ด๋ฉด, ์์ ๊ทธ๋ฅ 301๋ก ๋ฐ๊ฟ์ ๋ฃ์ด์ค
if temp[0]*100 + temp[1] < 301 {
flowers.append((301, temp[2]*100 + temp[3]))
continue
}
// 3์ฐจ๋ก ๊ทธ ์ค๊ฐ ๋ฒ์์ ํฌํจ๋๋ ์ ๋ค์ ๊ฑ ๋ฃ์ด์ค
flowers.append((temp[0]*100 + temp[1], temp[2]*100 + temp[3]))
}
// ํผ๋๋ ์ค๋ฆ์ฐจ์, ๊ฐ์ผ๋ฉด ์ง๋๋ ์ ๋ด๋ฆผ์ฐจ์ (๊ธธ์๋ก ์์์์น)
flowers.sort {
if $0.0 == $1.0 {
return $0.1 > $1.1
} else {
return $0.0 < $1.0
}
}
var max = 0
var temp = 0
var answerArr = [Int]()
let start = 301
let end = 1130
var idx = 0
// 301๋ถํฐ ํผ์ด์๋ ๊ฝ์ด ์๋ ๊ฒฝ์ฐ
if flowers[idx].0 > 301 {
return 0
}
// ์
๋ ฅ๋ฐ์ ๊ฝ์ด 1๊ฐ์ธ ๊ฒฝ์ฐ
if flowers.count == 1 {
if flowers[idx].0 == start && flowers[idx].1 > end {
return 1
} else {
return 0
}
}
while idx < flowers.count {
// ์ด์ฐจํผ ์ ๋ ฌ, ๋งจ์ฒ์๊ฑฐ ์ผ๋จ์ ํ
if max > end {
break
}
if idx == 0 {
max = flowers[idx].1 // ์ง๋๋ ์ด max
idx += 1
answerArr.append(max)
continue
}
// ์ง๊ธ ์ต์ข
์ผ๋ก ์ง๋๋ max๋ณด๋ค ์ง๋๋ ์ด ์์๋ฉด ๊ทธ๋ฅ pass
if flowers[idx].1 < max {
idx += 1
continue
}
// ํผ๋๋ ์ max๋ณด๋ค ์๊ณ , ์ง๋๋ ์ max๋ณด๋ค ํฌ๋ฉด (์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ฒ์๋ด)
if flowers[idx].0 <= max, flowers[idx].1 > max {
// ์ง๊ธ๊น์ง ์ํํ ๊ฝ๋ค ๋ค์์ผ๋ก ํ์ํ๋ฉด์ ์ ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฝ ์ฐพ์์ค
// ์ ํ๊ฐ๋ฅ์ฑ? -> ํผ๋๋ ์ด ๋ฒ์๋ด์ ๋ค์ด์ค๋ฉด์, ์ง๋๋ ์ ๋ ๋ฆ๋ ๊ฒ
// ์ผ๋จ temp์ ์์๋ก ์ง๋๋ ์ ์ฅํด์ฃผ๊ณ , ์ด temp๋ณด๋ค ํฐ์ ์ฐพ์์ค
temp = flowers[idx].1
for j in idx+1..<flowers.count {
// ํผ๋๋ ์ ์ฐ๋ฆฌ๊ฐ ๋ง์กฑํ๋ ๋ฒ์๋ด๊ณ , ์ง๋๋ ์ ํ์ฌ ์
๋ ฅ๋ฐ์ temp๋ณด๋ค ํฌ๋ฉด?
if flowers[j].0 <= max, flowers[j].1 > temp {
temp = flowers[j].1
} else {
break // ์ด์ฐจํผ ์ ๋ ฌ์ ํด๋๊ธฐ ๋๋ฌธ์ ์์ ๋ง์กฑ ์ํ๋ฉด passํด์ฃผ๋๊ฒ ๋ง์
}
}
max = temp
answerArr.append(max)
}
idx += 1
}
print(answerArr)
if answerArr[answerArr.count-1] <= end {
return 0
}
return answerArr.count
}
print(solution())
์ง์ง ๋ฏธ์ณ ๋์๊ฐ์๊ฒ ๋ค... ๋๋์ฒด ์์ธ์ผ์ด์ค ๋ญ ๋ชป์ฐพ์์ ๊ณ์ ํ๋ฆฌ๋์ง ๋ชจ๋ฅด๊ฒ ๋ค ใ ใ
์.. ์ด๋๋ถ๋ถ์์ ์๋๋์ง ์ฐพ์๋ด์ผํ๋ค ใ
ใ
์ผ๋จ, ๋ฐฑ์ค ์์ ๋ค์ ํต๊ณผํ๊ธด ํ๋๋ฐ, ์ฑ์ ํ๋๊ฑฐ ๋ณด๋ฉด 1%๋์ด๊ฐ๋ค๊ฐ ๋ฐ๋ก ํ๋ ธ๋ค๊ณ ๋์จ๋ค. ์ฆ, ํต๊ณผํ๋ ์ผ์ด์ค๊ฐ ๊ฑฐ์ ์๋ค๋ ๋ป์ด๋ค ใ
ใ
ใ
ใ
ใ
ใ
๊ทธ๋ฅ ๋ค ํ๋ ค๋จน์๋ค๋ ๋ป;
๋ค์ ๊ตฌํํด์ผํ ์๊ธฐ์ ์ฒํ๋ค.... ์ ์ด๊ฑฐ ์ง๊ธ ์ดํ์งธ ํ๊ณ ์๋๋ฐ ใ
ใ
ใ
(๋ฉฐ์น ํ,, ์๋ ์ฝ ํ ๋ฌ ํ,,) n์ฐจ์๋ ๐คฏ ์์ง๋ ๊ณต์ฃผ๋์ ์ด๋ ต๋ค
์๋,, ๋ค์ ํ์ด๋ณด๊ณ ์ ์ปดํจํฐ๋ฅผ ์ผฐ๋ค. ์์ฆ ๊ทธ๋ฅ ์ฑ์ฉ์ค๋น + ์์์ + ๋ฉด์ ๋ฑ ๋๋ฌธ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ง์ด ํ์ง ๋ชปํ๋ค. ํ์ง๋ง, ์ต์ข
๋ฉด์ ๋ ์ด์ ๋๋ฌ์ผ๋, ๊ธํ๋ถ์ ๊ป์ผ๋ ๋ค์ ์๊ณ ๋ฆฌ์ฆ์ ์ง์คํด๋ณด์! ์,,, ๊ณต์ฃผ๋ ๋จผ์ ์์ ๋ฒ๋ฆฌ์ ;; ์ฐจ๊ทผ์ฐจ๊ทผ ์ฒจ๋ถํฐ ๋ค์ ํ์ด๋ณด์. ๋์ , ๋ฐฉ์์ ๋น์ทํ๊ฒ ํ ์์ ์ด๋ค. go
์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ (301๋ก ๋ฐ๊ฟ์ฃผ๊ณ ์
๋ ฅ๋ฐ์์ฃผ๊ณ ์ ๋ ฌํ๋ ๊ณผ์ )์ ๋์ผํ๊ฒ ์งํํ๊ณ , ๋ค์ ์ฝ๋๋ฅผ ๋ค๋ฅด๊ฒ ๋ฐ๊ฟจ๋ค.
- ์ฒซ๋ฒ์งธ flower์ ์์์ ์ด 301์ด๋ฉด ๋ฌด์กฐ๊ฑด ์ ํํด์ค๋ค. (๊ฝ์ด ์ง๋๋ ์ง๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํด์ฃผ์๊ธฐ ๋๋ฌธ์ ๋ ์ง๊ฐ ๊ฐ์ผ๋ฉด ๋ฌด์กฐ๊ฑด ์์์๋๊ฑฐ ์ ํํ๋๊ฒ ๊ฐ์ฅ ์ต์ ์ด๋ค.)
- ๋ง์ฝ 301์ด ์๋๊ฒฝ์ฐ, 301๋ถํฐ ์ ๋๊ฝ์ด ํ์ ์๊ธฐ ๋๋ฌธ์ return 0
- 301์ด ์กด์ฌํ๋ค๋ฉด, start, end ์ง์ ์ ์ฒซ๋ฒ์งธ ๊ฝ์ผ๋ก ์ค์ ํด์ฃผ๊ณ , ๋ค์๊ฝ๋ถํฐ ์ํํ๋ฉด์ ๊ฝ์ ์ ํํด ์ค ๊ฒ์ด๋ค.
- (๋ณ์์์) temp๊ฐ ๋ค์ด๊ฐ ๋ณ์๋ ์ํํ๋ฉด์ ๋ณด๊ณ ์๋ ๊ฝ์ ์์๋ก ์ ํํ๋ค๋ ๋ป์ด๋ค.
- while๋ฌธ์ผ๋ก idx๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๋ ค์ค๋ค. idx๋ ํ์ฌ ์ ํ๋ ๊ฝ์ index๋ฅผ ์๋ฏธํ๋ค. idx๋ก ์ ํํ ์ด์ ๋ ์ฐ๋ฆฌ๋ ๊ฝ์ ๋ฏธ๋ฆฌ ์ ๋ ฌํด๋์๊ธฐ ๋๋ฌธ์ ์ ํ๋ ๊ฝ ์๋ถ๋ถ์ ๋ณด์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
- start ์ end๋ ์ฑํ๋ ๊ฝ์ ํผ๋๋ ๊ณผ ์ง๋๋ ์ธ๋ฐ, ์ ํ๋ ๊ฝ์ end๊ฐ 1130๋ณด๋ค ํฌ๋ฉด, ๊ฑฐ๊ธฐ์ ๋ฐ๋ก ์ ๋ต์ ์ถ๋ ฅํ๋ค.
- for ๋ฌธ์ผ๋ก ํ์ฌ idx๋ณด๋ค ํ์นธ ๋ค๋ถํฐ ์ํํด์ค๋ค.
- ๋ง์ฝ flowers[i]์ ํผ๋๋ ์ด ํ์ฌ start์ ๊ฐ๋ค๋ฉด ๋ณผํ์๊ฐ ์๊ณ (์ง๋๋ ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ธฐ ๋๋ฌธ)
- flowers[i]์ ํผ๋๋ ์ด ํ์ฌ start์ end์ฌ์ด์ ์๊ณ , flowers[i]์ ์ง๋๋ ์ด tempEnd๋ณด๋ค ํฌ๋ฉด! ๋ ๊ธธ๊ฒ ํผ์ด์๋ค๋ ๋ป์ด๊ธฐ ๋๋ฌธ์ temp๋ฅผ ๊ฐฑ์ ํด์ค ์ ์๋ค. ์ฌ๊ธฐ์ tempEnd์ tempStart๋ฅผ ๊ฐฑ์ ํด์ฃผ๊ณ , idx๋ ๊ฐฑ์ ํด์ค๋ค.
- flowers[i]์ ์ง๋๋ ์ด tempEnd๋ณด๋ค ์์ผ๋ฉด, ์ํํ๊ณ ์๋ ๊ฝ์ ์ต๋๊ธธ์ด๊ฐ ์๋๋ฏ๋ก ๋ณผ ํ์๊ฐ ์๋ค.
- ์ด ๋ชจ๋ ๊ณผ์ ์ ์์กฐ๋กญ๊ฒ ํต๊ณผํ๋ฉด flowersList์ idx๋ฅผ ๋ฃ์ด์ฃผ๊ณ (์ ํ๋๊ฝ๋ค์ ์งํฉ)
- start์ end์ ํ์ฌ ์ ํ๋ idx์ ํผ๋๋ ๊ณผ ์ง๋๋ (temp)์ ๊ฐฑ์ ํด์ฃผ๋ฉด ๋๋ค.
์ด๋ ๊ฒ ํ๋๋ฐ,,, ๋ต์ ๋ง์๊ฒ ๊ฐ๋ค. ๊ทผ๋ฐ ๋ฉ๋ชจ๋ฆฌ์ด๊ณผ๊ฐ ๋๋ค....
import Foundation
func solution() -> Int {
let n = Int(readLine()!)!
var flowers = [(Int, Int)]()
for _ in 0..<n {
let temp = readLine()!.split(separator: " ").map{ Int($0)! }
if temp[2]*100 + temp[3] < 301 {
continue
}
if temp[0]*100 + temp[1] < 301 {
flowers.append((301, temp[2]*100 + temp[3]))
continue
}
flowers.append((temp[0]*100 + temp[1], temp[2]*100 + temp[3]))
}
flowers.sort {
if $0.0 == $1.0 {
return $0.1 > $1.1
} else {
return $0.0 < $1.0
}
}
if flowers[0].0 > 301 {
return 0
}
var start = flowers[0].0
var end = flowers[0].1
var flowerList = [0]
var tempStart = 0
var tempEnd = 0
var idx = 0
var flag = false
while idx < flowers.count {
if end > 1130 {
return flowerList.count
}
for i in idx+1..<flowers.count {
if flowers[i].0 == start {
continue
} else if flowers[i].0 > start, flowers[i].0 <= end, tempEnd < flowers[i].1 {
flag = true
tempEnd = flowers[i].1
tempStart = flowers[i].0
idx = i
} else if flowers[i].1 <= end {
continue
}
}
if flag {
end = tempEnd
start = tempStart
flowerList.append(idx)
flag = false
}
}
return flowerList.count
}
print(solution())
๐คฏ๐คฏ๐คฏ๐คฏ๐คฏ๐คฏ๐คฏ๐คฏ๐คฏ๐คฏ๐คฏ๐คฏ๐คฏ๐คฏ
์ง์ง ๋ง ์์์ด ๋์ค๋น ํคํค ์,,, ์ฐจ๊ทผ์ฐจ๊ทผ ๋ค์๋ณด์ ใ
ใ
ใ
ใ
ใ
๋ฉ๋ชจ๋ฆฌ์ด๊ณผ? ์์ธ์ด๋ญ์ง.. ๋ต์ ๋ง์๊ฑฐ์ผ ๋ญ์ผ ; ์ผ๋จ ์ฑ์ ์ด 98%๊น์ง ๊ฐ๋ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ด๊ณผ๊ฐ ๋๋๋ฐ,...
์ธ๋ฐ์์ด for๋ฌธ์ด๋ while๋ฌธ์ด ๋์๊ฐ๋ ๋ถํ์ํ ์ฐ์ฐ์ ์ค์ฌ์ค์ผ๊ฒ ๋ค๊ณ ํ๋จํ๋ค. ์๋๋ฉด, ์ฐ์ ์ฑ์ ํ๋๊ฑฐ๋ณด๋ฉด 98%๊น์ง ์ ๋ถ ์ฒด์ ์ ํ์ง๋ง, ๋ฉ๋ชจ๋ฆฌ์ด๊ณผ๊ฐ ๋ฌ๊ธฐ ๋๋ฌธ. ์ผ๋จ ๋๋ฅผ ๋ฏฟ๊ณ ์๋ฃจ์
์ ๋ง์๋ค๊ณ ํ๋จํด๋ณด์.
ํ์ฌ ์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด, for๋ฌธ ๋ด๋ถ์์ ์ค๊ฐ์ ๋์ด์ฃผ๋ ์ง์ ์ด ์กด์ฌํ์ง ์๋๋ค. ์ ๋ถ continue๋ก ๋๊ธฐ๊ฒ ๋๋ค. ์ฌ๊ธฐ ๋ถ๋ถ์์ ์ค๊ฐ์ ๋์ด์ breakํด์ค ์ ์์ง ์์๊น?
์๊ฐํด๋ณด๋๊น, ๋ค์ ์ํํ๋ ค๊ณ ํ๋ ๊ฝ์ด end๋ณด๋ค ๋ฆ๊ฒ ํผ๋ฉด ์ฐ๋ฆฌ๋ ์๋ฌด๊ฝ๋ ์ ํํ ์ ์๋ค. (๊ฝ์ ์์๋๋ก ์ ๋ ฌ๋์ด์๊ธฐ ๋๋ฌธ์ ์ค๊ฐ์ด ํ
๋น๊ฒ ๋๋ ๊ฒ์ ์ ๋ต์ด ๋ ์ ์๋ค!) ๋ฐ๋ผ์ break๋ฅผ ๊ฑธ์ด์ค ์ ์๋๋ก ํ๋ ์ฝ๋๋ฅผ ๋งจ์์ ์ถ๊ฐํ๋ค. ๊ทธ๋ฆฌ๊ณ tempStart๋ ๊ตณ์ด ํ์์๋ ๋ณ์์ธ ๊ฒ ๊ฐ์์ ์ญ์ ํด์ฃผ์๋ค. ๊ทธ๋ฌ๊ณ ์งํํ ๊ฒฐ๊ณผ!!
n+1์ฐจ์๋,,,, - ๋ง์์ต๋๋ค!
์ง์ง ์์ฒญ๋๋ค. ํ๋ฌ์ ์ฏค ๊ณต์ฃผ๋ ๋ฟ์๊ธฐ๊ฐ ๋ด ๋ชฉํ์ผ์ ๋๋ก ์ง์ง ์คํธ๋ ์ค ๋ฐ์์๋๋ฐ, ๋๋ฆ ๋ฉฐ์น ํ, ๋ฆฌํ๋์ฌ ํ ์๋กญ๊ฒ ๋ฌธ์ ์ ์ ๊ทผํด๋ณด๋ ์๊ฐ๋ณด๋ค ๋นจ๋ฆฌ ํ๋ ธ๋ค. ์ด ๊ณต์ฃผ๋ ์ด์์,,,, ๋ ๋ด๊ฐ ๋ค์ ์๋ด (ํด์ํ๊ธฐ ํธํ๊ฒ ๊ทธ๋ฅ ์ฃผ์๊ณผ print๋ฌธ์ ์ง์ฐ์ง ์๊ณ ์์ฑํด๋ก๋๋ค,.)
import Foundation
func solution() -> Int {
let n = Int(readLine()!)!
var flowers = [(Int, Int)]()
for _ in 0..<n {
let temp = readLine()!.split(separator: " ").map{ Int($0)! }
// 1์ฐจ๋ก ์ง๋๋ ์ด 3์1์ผ ์ด์ ์ด๋ฉด ์์ flowers์ ๋ฃ์ด์ฃผ์ง๋ ์์
if temp[2]*100 + temp[3] < 301 {
continue
}
// 2์ฐจ๋ก ํผ๋ ๋ ์ด 301๋ณด๋ค ์ด์ ์ด๋ฉด, ์์ ๊ทธ๋ฅ 301๋ก ๋ฐ๊ฟ์ ๋ฃ์ด์ค
if temp[0]*100 + temp[1] < 301 {
flowers.append((301, temp[2]*100 + temp[3]))
continue
}
// 3์ฐจ๋ก ๊ทธ ์ค๊ฐ ๋ฒ์์ ํฌํจ๋๋ ์ ๋ค์ ๊ฑ ๋ฃ์ด์ค
flowers.append((temp[0]*100 + temp[1], temp[2]*100 + temp[3]))
}
// ํผ๋๋ ์ค๋ฆ์ฐจ์, ๊ฐ์ผ๋ฉด ์ง๋๋ ์ ๋ด๋ฆผ์ฐจ์ (๊ธธ์๋ก ์์์์น)
flowers.sort {
if $0.0 == $1.0 {
return $0.1 > $1.1
} else {
return $0.0 < $1.0
}
}
print(flowers)
if flowers[0].0 > 301 {
return 0
}
var start = flowers[0].0
var end = flowers[0].1
var flowerList = [0] // ์ฒซ๋ฒ์งธ๊ฝ ๋ฌด์กฐ๊ฑด ์ ํ (์ด๊ฑฐ ์์ ํด์ผํจ. ๋ง์ฝ 301๋ณด๋ค ์ดํ๋ฉด?)
var tempEnd = 0
var idx = 0
var flag = false
while idx < flowers.count {
if end > 1130 {
// ๋ต์ ๋ฌด์กฐ๊ฑด 1201์ด์์ด์ด์ผํจ.
print("flowerlist \(flowerList)")
return flowerList.count
}
for i in idx+1..<flowers.count {
if flowers[i].0 > end { // ๋ค์๊ฝ์ด end๋ณด๋ค ๋ฆ๊ฒ ํผ๋ฉด, ๋๊ฐ๋๋ผ
break
}
if flowers[i].0 == start {
continue
} else if flowers[i].0 > start, flowers[i].0 <= end, tempEnd < flowers[i].1 {
// ์ํ์ค์ธ ๊ฝ์ ์์์ ์ด ๋ฒ์๋ด์ ์๊ณ , ์ด์ ์ ๋น๊ตํด์จ tempEnd๋ณด๋ค ๊ธธ๋ฉด ๊ทธ๊ฑฐ์ ํํด์ผํ๋๊น temp ๊ฐฑ์
flag = true
tempEnd = flowers[i].1
idx = i // idx๊ฐฑ์ ํด์ค์ผํด ์ง๊ธ ๊ทธ ์์น์์๋ ๊ฝ ์ ํํ๋ค๊ณ ์๋ ค์ค์ผํด.
} else if flowers[i].1 <= end { // end๋ณด๋ค ์งง์ผ๋ฉด ๋ณผํ์๋ ์์
continue
}
}
if flag {
end = tempEnd
start = flowers[idx].0
flowerList.append(idx)
flag = false
} else {
print("์๋ฌด๊ฒ๋ ์ ํ ์๋๊ฑฐ์? ๊ทธ๋ผ ์ค๊ฐ์ ๋น์๋จ ๋ป 0")
return 0
}
}
return flowerList.count
}
print(solution())
์ ๊ณต์ฃผ๋ ํ์ถ!!! ์๋ฃ!!!!! ํ๋ณต ๊ทธ์ก์ฑ ๐ธ๐ป
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] (Swift) 2170๋ฒ - ์ ๊ธ๊ธฐ (์๊ฐ์ด๊ณผ ๋ณด๋ฅ, ๊ณจ๋5, ๊ทธ๋ฆฌ๋) (2) | 2023.05.18 |
---|---|
[๋ฐฑ์ค] (Swift) 1744๋ฒ - ์ ๋ฌถ๊ธฐ (๊ณจ๋4, ๊ทธ๋ฆฌ๋) (0) | 2023.05.16 |
[๋ฐฑ์ค] (Swift) 11501๋ฒ - ์ฃผ์ (์ค๋ฒ2, ๊ทธ๋ฆฌ๋) (0) | 2023.04.25 |
[๋ฐฑ์ค] (Swift) 1697๋ฒ - ์จ๋ฐ๊ผญ์ง (์ค๋ฒ1, ๋๊ฐ์ง ํ์ด BFS, DP) (2) | 2023.04.22 |
[๋ฐฑ์ค] (Python) 2293๋ฒ - ๋์ 1 (๊ณจ๋5, dp) (0) | 2023.04.01 |