์๋
ํ์ธ์ ์ ์ธ์
๋๋ค:) ๊ฝค๋ ์ค๋๋ง์ด์ฃ ..? ์ธ๊ฐ์ด ์ค์ผ ๊ฒ์ผ๋ฅผ๊น์
์ค๋๋ง์ ํฐ์คํ ๋ฆฌ๋ฅผ ๋ค์ด์๋๋ ํผ๋์ ์ ๊ธ์ด ์์ฒญ ๋ง๋ค์.. ๋ค๋ค ๊พธ์คํ ๊ธฐ๋ก ๋๋จํด..๋ณธ๋ฐ๊ฒ ์ต๋๋ค..
๋๋ถ์ ์ ๋ ์๊ทน๋ฐ๊ณ ๋ค์ ์ด์ฌํ ํฐ์คํ ๋ฆฌ ๊ธ์ ์ด์ฌํ ์ช๋ณด๋ ค๊ณ ํฉ๋๋ค!!!!
์ค๋์ PS ๊ธฐ๋ก์ ๋จ๊ฒจ๋ณด๋ ค๊ณ ํ๋๋ฐ ๊ฐ์๊ธฐ Lv3..? ํฐ์คํ ๋ฆฌ์ ํ์ด๊ธฐ๋ก์ ์ํ์ง๋ง.. ๋จธ ํ๋ค๋ณด๋ ๋ ๋ฒจ3๊น์ง ์๋ค์?
๋ ๋ฒจ3 ๋ฌธ์ ๋ฅผ ํ๋ค๋ณด๋ ํ์คํ ํน์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ผํ๊ฑฐ๋, ํจ์จ์ฑ๊น์ง ๊ณ ๋ คํด์ผํ๋ ๋ฌธ์ ๊ฐ ๋ง์์ ๊ธฐ๋ก์ ํ์์ฑ์ ๋๊ผ์ต๋๋ค.
๊ทธ๋์ ์์ผ๋ก ๋ฌธ์ ํ์ด๊ณผ์ ์์ ์๋ก ์๊ฒ ๋๋ ์ข์ ์ ๊ทผ ๋ฐฉ๋ฒ์ด๋ ํ์ด ๋ฐฉ๋ฒ๋ค์ ๊ธ๋ก ๋จ๊ฒจ๋ณด๋ ค๊ณ ํฉ๋๋ค!
์ ์ PS ํจ์จ์ฑ์ ์ํด ๋ฌธ์ ์ ๋ํ ์ค๋ช ์ ์๋ตํ๊ณ ์ ๊ทผ ๋ฐ ํ์ด ์์ฃผ๋ก ๊ธฐ๋กํด๋๊ฐ๋๋ก ํ ๊ฒ์๐๐
๋ฌธ์ ๋งํฌ
๋ฌธ์ ํ์ด
์ผ๋จ ๊ตฌํ ๋ฌธ์ ๊ธด ํ๋ฐ.. ์ ํ์ฌํญ์ด ์๋์ ๊ฐ๊ธฐ ๋๋ฌธ์ ํจ์จ์ฑ์ ๊ณ ๋ คํด์ผ๋ง ํ๋ ๋ฌธ์ ์์ต๋๋ค.
์ ํ์ฌํญ
- N: 200,000,000 ์ดํ์ ์์ฐ์
- stations์ ํฌ๊ธฐ: 10,000 ์ดํ์ ์์ฐ์
- stations๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด ์๊ณ , ๋ฐฐ์ด์ ๋ด๊ธด ์๋ N๋ณด๋ค ๊ฐ๊ฑฐ๋ ์์ ์์ฐ์์ ๋๋ค.
- W: 10,000 ์ดํ์ ์์ฐ์
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํฌ๊ธฐ๊ฐ N์ธ ๋ฐฐ์ด์ ๋ง๋ค์ด ์ธ๋ฑ์ค ํ๋ํ๋๋ฅผ ํ์ธํ ์๋ ์๊ฒ ๋ค๊ณ ํ๋จํ ํ, stations ๋ฐฐ์ด์ ์ํํ๋ฉฐ ๋จผ์ ์ ํ๊ฐ ๋๋ฌํ๋ ๊ณณ๋ค์ ์ ์ธํ๊ณ ์ค๊ฐ์ค๊ฐ ์ ํ๊ฐ ๋ฟ์ง ์๋ ๊ตฌ๊ฐ์ด ์ด๋์ง๋ฅผ ํ์ ํด์ ์๋ก ์ฆ์คํด์ผ ํ ๊ธฐ์ง๊ตญ ๊ฐ์์ ์ต์๊ฐ์ ๊ตฌํด์ผ๊ฒ ๋ค๊ณ ํ๋จํ์ต๋๋ค. ์ฌ๊ธฐ๊น์ง๋ ์ ์ ๊ทผํ๋ ๊ฒ ๊ฐ์๋ฐ.. ๊ธฐ์ง๊ตญ ๊ฐ์์ ์ต์๊ฐ์ ๊ตฌํ๋ ์์ด๋์ด๊ฐ ์ ๋ ์ค๋ฅด์ง ์์ ๋ค๋ฅธ ํ์ด๋ค์ ์ฐธ๊ณ ํด์ ํด๊ฒฐํ์ต๋๋ค..๐ฅฒ
์์ด๋์ด
์๋ก ์ฆ์คํด์ผ ํ ๊ธฐ์ง๊ตญ ๊ฐ์์ ์ต์๊ฐ์ ๊ตฌํ๋ ์์ด๋์ด๋ ์ ํ๊ฐ ๋๋ฌํ์ง ์๋ ๊ตฌ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ์ด์ฉํ๋ ๊ฒ์ ๋๋ค.
ํ๋์ ๊ธฐ์ง๊ตญ๋น ์ปค๋ฒํ ์ ์๋ ๊ตฌ๊ฐ์ w*2+1 ์ ๋๋ค. (๊ธฐ์ง๊ตญ์์ ์์ชฝ์ผ๋ก w๋งํผ ๋จ์ด์ง ๊ณณ๊น์ง ์ปค๋ฒ๊ฐ๋ฅํ๊ณ , ๊ธฐ์ง๊ตญ์ด ์ค์น๋ ๊ณณ๋ ํฌํจ๋์ด์ผํ๋ฏ๋ก + 1) ์ด๋ฅผ ์ด์ฉํ๋ฉด ์ ํ๊ฐ ๋ฟ์ง ์๋ ๊ตฌ๊ฐ์ ๊ฑฐ๋ฆฌ / (w*2+1) ๋ผ๋ ์์ผ๋ก ์ค์นํด์ผํ ๊ธฐ์ง๊ตญ ๊ฐ์์ ์ต์๊ฐ์ ๊ตฌํ ์ ์์ต๋๋ค. ์ด ๋, ๋๋์ด ๋จ์ด์ง์ง ์๋๋ค๋ฉด ์ปค๋ฒํ ์ ์๋ ๊ตฌ๊ฐ์ด ์๊ธด๋ค๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ์ง๊ตญ ๊ฐ์๋ฅผ +1 ํด์ฃผ์ด์ผ ํจ์ ๊ณ ๋ คํด์ ์ฝ๋๋ฅผ ์ง์ฃผ์ด์ผ ํฉ๋๋ค! ์ ํ๊ฐ ๋๋ฌํ์ง ์๋ ๊ตฌ๊ฐ์ ๊ฑฐ๋ฆฌ๋ ๊ธฐ์ง๊ตญ์ด ์ค์น๋ ์ํํธ์ ๋ฒํธ๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ธ [stations]๋ฅผ ์ํํ๋ฉฐ ๊ตฌํ๋ฉด ๋๋๋ฐ, [stations]์ ๋ง์ง๋ง ์์๊ฐ N์ด ์๋ ๊ฒฝ์ฐ(=๋ง์ง๋ง ์ํํธ๊ฐ ์๋ ๊ฒฝ์ฐ)์๋ ์ค๋ฅธ์ชฝ์ ์ ํ๊ฐ ๋๋ฌํ์ง ์๋ ๊ตฌ๊ฐ์ด ๋จ์์๋ค๋ ๊ฒ์ด๋ฏ๋ก [stations] ์ํ ์ข ๋ฃ ํ์ ์ถ๊ฐ์ ์ธ ๊ธฐ์ง๊ตญ ์ค์น๊ฐ ๋ ํ์ํ์ง ํ์ธํ๋ ๊ณผ์ ์ด ํ์ํฉ๋๋ค.
1. [stations]๋ฅผ ์ํํ๋ฉด์ ์ ํ๊ฐ ๋๋ฌํ์ง ์๋ ๊ตฌ๊ฐ์ ๊ฑฐ๋ฆฌ ๊ตฌํ๊ธฐ
2. 1์์ ๊ตฌํ ๊ฑฐ๋ฆฌ / (w*2+1) ๋ก ํด๋น ๊ตฌ๊ฐ์ ์ค์นํด์ผ ํ ๊ธฐ์ง๊ตญ ๊ฐ์์ ์ต์๊ฐ ๊ตฌํ๊ธฐ (๋๋์ด ๋จ์ด์ง์ง ์๋ ๊ฒฝ์ฐ +1)
3. [stations] ์ํ ์ข ๋ฃ ํ ๋ง์ง๋ง ์ธ๋ฑ์ค๊ฐ ๋ง์ง๋ง ์ํํธ ๋ฒํธ๊ฐ ์๋ ๊ฒฝ์ฐ ์ถ๊ฐ์ ์ผ๋ก ๊ธฐ์ง๊ตญ ์ค์น
Swift ํ์ด ์ฝ๋
import Foundation
func solution(_ n:Int, _ stations:[Int], _ w:Int) -> Int {
var answer = 0
var leftStart = 1
for station in stations {
// ์ ํ ๋ฟ์ง ์๋ ์ผ์ชฝ ๊ฑฐ๋ฆฌ ๊ตฌํด์ ํด๋น ๊ฑฐ๋ฆฌ ์ปค๋ฒํ ์ ์๋ ๊ธฐ์ง๊ตญ ์ต์ ๊ฐ์ ๊ตฌํ๊ธฐ
if leftStart < station - w {
let leftEnd = station - w
let length = leftEnd - leftStart
if length % (w*2+1) == 0 {
answer += length / (w*2+1)
} else {
answer += length / (w*2+1) + 1
}
}
leftStart = station + w + 1 // ์ผ์ชฝ ์์์ ๊ฐฑ์
}
let last = stations[stations.count-1]
// ์ค๋ฅธ์ชฝ์ ์ ํ ๋ฟ์ง ์๋ ๋ถ๋ถ์ด ๋จ์ผ๋ฉด
if last + w + 1 <= n {
leftStart = last + w + 1
let leftEnd = n+1 // ์ธ๋ฑ์ค 0๋ถํฐ ์์ํ๋๊น 1 ๋ํด์ค
let length = leftEnd - leftStart
if length % (w*2+1) == 0 {
answer += length / (w*2+1)
} else {
answer += length / (w*2+1) + 1
}
}
return answer
}
[์ฐธ๊ณ ์๋ฃ]
'๐ฅ CS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm/Swift] ํ๋ก๊ทธ๋๋จธ์ค(Lv.2) - ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ ์ฐพ๊ธฐ (2) | 2023.04.03 |
---|---|
[Algorithm/Swift] ํ๋ก๊ทธ๋๋จธ์ค(Lv.3) - ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ (2) | 2023.03.31 |
[Algorithm/Swift] ์ด์ง ํ์(Binary Search) (0) | 2023.02.06 |
[Algorithm/Swift] ํ๋ก๊ทธ๋๋จธ์ค(Lv.2) - ๋ฌด์ธ๋ ์ฌํ (1) | 2023.01.29 |
[Algorithm/Swift] ๋์ ๊ณํ๋ฒ(Dynamic Programming) (2) | 2023.01.11 |