์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค!
์์ฆ์ ํ๋ก๊ทธ๋๋จธ์ค์ ๋ฌธ์ ๋ค์ ๊พธ์คํ ํ๋ฉด์ ์ทจ์ฝํ ์ ํ์ ๋ฌธ์ ๋ค์ ํ๋ก๊ทธ๋๋จธ์ค, ๋ฐฑ์ค์์ ๋ ์ฐพ์์ ์ฐ์ตํด๋ณด๋ ๋ฐฉ์์ผ๋ก PS ์ค๋ ฅ์ ๊พธ์คํ ํฅ์์ํค๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์๋๋ฐ์, ์ค๋์ ์ ๋ฒ์ <ํ๋ก๊ทธ๋๋จธ์ค(Lv.3) - ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ> ๋ฌธ์ ๋ฅผ ํตํด ์ด๋ถํ์ ๋ฌธ์ ๋ฅผ ์ฒ์ ์ ํ๊ณ , ๋ ์ฐ์ตํด๋ณด๊ณ ์ถ์ด์ ํ๋ก๊ทธ๋๋จธ์ค์์ ์ด๋ถํ์ ์ฐ์ต๋ฌธ์ ๋ฅผ ์ฐพ์์ ํ์ด๋ดค์ต๋๋ค!
ํ๋ค๋ณด๋ ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ ๋ฌธ์ ์ ๋น์ทํ ์ ์ด ๋ง์ ๊ฒ ๊ฐ์์ ์ด๋ถํ์ ๋ฌธ์ ๋ฅผ ์ ํ์ ๋ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ธฐ๋กํด๋๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ๊ฐ์ ธ์๋ดค์ต๋๋ค :)
๋ฌธ์ ๋งํฌ
๋ฌธ์ ํ์ด
์ผ๋จ, ์ด๋ถํ์ ๋ฌธ์ ๋ก ๋ถ๋ฅ๋์ด ์์ผ๋ ๋น์ฐํ ์ด๋ถํ์์ผ๋ก ์ฒ์๋ถํฐ ํ์์ต๋๋ค.
์ ๊ฐ ํ์ดํ ๋ฐฉ๋ฒ์ ๋จผ์ ์ ๋ฆฌํ๊ณ , ์นด์นด์ค ๊ธฐ์ถ๋ฌธ์ ์ธ <์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ> ์์ ๊ณตํต์ ์ ์ ๋ฆฌํ๋ฉด์ ์ด๋ถํ์ ์ ํ์ธ์ง ์ด๋ป๊ฒ ํ์ ํ ์ ์๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ถํ์ ์ ํ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ ์ด๋ณผ๊ฒ์!
๋ฌธ์ ์์ ๊ตฌํ๋ผ๊ณ ํ ๊ฐ์ ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฌ๋ฅผ ๋ฐ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ต์๊ฐ์ ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ '์๊ฐ'์ ๊ธฐ์ค์ผ๋ก ๋๊ณ ์ต๋ ๋ฒ์๋ถํฐ ๋ฐ์ฉ ์ขํ๋๊ฐ๋ ๋ฐฉ์์ผ๋ก ํ์ด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ต๋๋ค!
left ๋ณ์๋ 1๋ก, right ๋ณ์๋ n * times.max()! ์ผ๋ก ์ด๊ธฐํํด๋๊ณ ์ด๋ถํ์์ ์งํํ๋๋ฐ์,
ํ์์ ๋ฒ์๋ฅผ ์ด๋ ๊ฒ ์ค์ ํ ์ด์ ๋ ์ฌ์ฌ๋ฅผ ๊ฐ์ฅ ๋นํจ์จ์ ์ผ๋ก ์ค๋๊ฑธ๋ฆฌ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ '๊ฐ์ฅ ์ค๋์๊ฐ๋์ ์ฌ์ฌํ๋ ์ฌ์ฌ๊ด์๊ฒ ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฌ๋ฐ๋ ๊ฒฝ์ฐ' ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค!
ํ์ ์งํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ์ฒดํฌํ ์๊ฐ์ left~right์ ์ค์๊ฐ์ผ๋ก ์ค์ ํฉ๋๋ค. (mid ๋ณ์)
2. ๊ธฐ์ค ์๊ฐ์ธ mid๋ถ ๋์ ์ฌ์ฌํ ์ ์๋ ์ฌ๋ ์์ ์ดํฉ์ ๊ตฌํฉ๋๋ค.
3-1. 2์์ ๊ตฌํ ์ฌ๋ ์๊ฐ n(=์ฌ์ฌํด์ผํ๋ ์ฌ๋ ์)๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด -> ์๋ก์ด right๋ฅผ mid๋ก ์ค์ ํฉ๋๋ค. (๋ฐฉ๊ธ ํ์ธํ ๊ฐ์ด ์ต์ ์ฌ์ฌ์๊ฐ์ผ ์๋ ์๊ณ ๋ ํด ์๋ ์๊ธฐ ๋๋ฌธ)
3-2. 2์์ ๊ตฌํ ์ฌ๋ ์๊ฐ n(=์ฌ์ฌํด์ผํ๋ ์ฌ๋ ์)๋ณด๋ค ์์ผ๋ฉด -> ์๋ก์ด left๋ฅผ mid + 1๋ก ์ค์ ํฉ๋๋ค. (๋ชจ๋ ์ฌ๋ ์ฌ์ฌ ์ํด์๋ ์๊ฐ์ ๋ ๋๋ ค์ผ ํ๊ธฐ ๋๋ฌธ)
4. 1~3์ ๊ณผ์ ์ left์ right๊ฐ ๊ฐ์์ง ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
Swift ํ์ด ์ฝ๋
import Foundation
func solution(_ n:Int, _ times:[Int]) -> Int64 {
var left = 1
var right = n * times.max()!
while left < right {
var mid = (left + right) / 2
var people = 0
for i in 0..<times.count {
// mid ์๊ฐ๋์ ์ฌ์ฌํ ์ ์๋ ์ฌ๋ ์
people += mid / times[i]
}
if people >= n { // ํต๊ณผ ์ธ์ ๊ฐ๊ฑฐ๋ ๋ง์ผ๋ฉด -> ์ต์ ์ฌ์ฌ ์๊ฐ์ผ์๋ ์๊ณ ๋ ํด ์๋ ์์
right = mid
} else { // ํต๊ณผ ์ธ์์ด ๋ ์ ๋ค๋ฉด (๋ค ๋ชป ํต๊ณผํ ๊ฒฝ์ฐ)
left = mid + 1 // ๋ ๊ธด ์๊ฐ ํ์
}
}
return Int64(left)
}
์ด๋ถ ํ์์ ์๋ํด๋ณด๋ฉด ์ข์ ๋ฌธ์
์ด๋ถ ํ์ ๋ฌธ์ ๋ ํด๋น ๋ฌธ์ ๊ฐ ์ด๋ถ ํ์ ์ ํ์ธ์ง ํ์ ํ๊ณ , ์กฐ๊ฑด๋ง ์ ์ค์ ํ๋ค๋ฉด ๊ทธ๋ฆฌ ์ด๋ ต์ง ์๊ฒ ํ ์ ์๋ ๋ฌธ์ ๋ผ๋ ์๊ฐ์ด ๋ค์๋๋ฐ์, ๊ทธ๋์ ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ ๋ฌธ์ ์ ์ด ๋ฌธ์ ์ ๊ณตํต์ ์ ์ ๋ฆฌํด๋ณด๋ฉด์ ์ด๋ถ ํ์์ ์๋ํด๋ณด๋ฉด ์ข์ ๋ฌธ์ ๋ค์ ํน์ง์ ์ฐพ์๋ณด๊ฒ ์ต๋๋ค!
1. ๋ฒ์ ๋ด์์ ๊ตฌํ ์ ์๋ ์ต๋๊ฐ or ์ต์๊ฐ์ ๊ตฌํ๋ ๋ฌธ์
์ด๋ถ ํ์ ์์ฒด๊ฐ ๋ฒ์๋ฅผ ์ค์ ํด๋๊ณ ๋ฐ์ฉ ์ค์ฌ๋๊ฐ๋ฉด์ ์ต์ ์ ํด๋ฅผ ์ฐพ์๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค๋ณด๋, ๋น์ฐํ ๋ฌธ์ ์์ ํน์ ๋ฒ์๋ฅผ ์ค์ ํด์ฃผ๊ณ ์ฌ๊ธฐ์ ๊ตฌํ ์ ์๋ ์ต๋๊ฐ ํน์ ์ต์๊ฐ์ ๊ตฌํด๋ผ! ์ด๋ ๊ฒ ์ฃผ์ด์ง๋ ๋ฌธ์ ์ ์ ์ฉํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ ๋ฌธ์ ๋ ์ฃผ์ด์ง ๊ธธ์ด์ ์ง๊ฒ๋ค๋ฆฌ๋ฅผ ๊ฑด๋ ์ ์๋ ์ต๋ ์ธ์์ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์๊ณ , ์ด ๋ฌธ์ ๋ n๋ช ์ ์ฌ์ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์ต์ ์๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ์์ต๋๋ค!
2. ์ ํ ์ฌํญ์ผ๋ก ๊ต์ฅํ ํฐ ๋ฒ์๊ฐ ์ฃผ์ด์ง๋ ๋ฌธ์
์๊ฒ์ด ํฐ ํน์ง์ธ ๊ฒ ๊ฐ์๋ฐ์, ๋ฒ์๊ฐ ์๋ค๋ฉด ์์ ํ์์ผ๋ก ๊ฒฝ์ฐ ํ๋ํ๋๋ฅผ ๋ฐ์ ธ๊ฐ๋ฉฐ ์ต์๊ฐ ํน์ ์ต๋๊ฐ์ ์ ๋ฐ์ดํธ ์์ผ์ฃผ๋ฉด์ ๋ต์ ๊ตฌํ ์ ์๊ฒ ์ง๋ง ์์ฒญ ํฐ ๋ฒ์๋ฅผ ๋ค ํ์ธํด๋ด์ผํ๋ค๋ฉด ๊ต์ฅํ ์ค๋์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ํจ์จ์ฑ ๋ฉด์์ ์ข์ง ์์ ์ฝ๋๊ฐ ๋ฉ๋๋ค..๐ฅฒ
์์ ํ์์์ ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค๋ฉด ์ด๋ถ ํ์์ ์ด์ฉํด์ ์ฝ๋๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ๊ฐ์ ํ ์ ์๊ฒ ์ฃ ?? ๋ง์ฝ ์ ํ์ฌํญ์ ๋ง๋ ์๋๋ ๋ฒ์๊ฐ ์ฃผ์ด์ง๋ค๋ฉด ์ฒ์๋ถํฐ ์ด๋ถ ํ์์ผ๋ก ์ ๊ทผํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!!
์ ๋ ๋ฌธ์ ์ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ์์ฒญ๋ ๋ฒ์๊ฐ ์ ํ ์ฌํญ์ผ๋ก ์ฃผ์ด์ก์ต๋๋ค. (์ฌ์ฌ์๊ฐ 10์ต๋ถ ์ด๋ฌ๋ค์ 10์ต๋ถ์ด๋ฉด 1900๋
๊ฑธ๋ฆผ)
- stones ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 1 ์ด์ 200,000 ์ดํ์ ๋๋ค.
- stones ๋ฐฐ์ด ๊ฐ ์์๋ค์ ๊ฐ์ 1 ์ด์ 200,000,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ์ ๊ตญ์ฌ์ฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ฌ๋์ 1๋ช ์ด์ 1,000,000,000๋ช ์ดํ์ ๋๋ค.
- ๊ฐ ์ฌ์ฌ๊ด์ด ํ ๋ช ์ ์ฌ์ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ 1๋ถ ์ด์ 1,000,000,000๋ถ ์ดํ์ ๋๋ค.
3. ์์๋๋ก ์กฐ๊ฑด์ ์ค์ ํด์ ์ฒดํฌํด๋ณด๊ธฐ๊ฐ ์ด๋ ค์ด ๋ฌธ์ (๋ค์ํ ๊ฒฝ์ฐ์ ์๊ฐ ์์ ์ ์๋ ๋ฌธ์ )
์ ๋ ๋ ๋ฌธ์ ์ ํน์ง์ด ๋จ์ํ ์กฐ๊ฑด๋ฌธ์ผ๋ก ํ์ธํด๋ณด๊ธฐ๊ฐ ์ด๋ ค์ด ๋ฌธ์ ๋ผ๊ณ ๋๊ผ๋๋ฐ์,
์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ ๋ฌธ์ ๊ฐ์ ๊ฒฝ์ฐ ์ด๋ค ๋์ ๋จผ์ ๋ฐ๋๋์ ๋ฐ๋ผ์ ๊ฑด๋ ์ ์๋ ์ธ์์ ์๊ฐ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ๋ชจ๋ ์์์ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์์ ์ฒดํฌํด๋ณด๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. (๋ฒ์๊ฐ ๋์ ๊ฒฝ์ฐ๋ ๋๋์ฑ!) ๊ทธ๋ฆฌ๊ณ , ์ด ๋ฌธ์ ๋ ํน์ ์๊ฐ์ด ๋์์ ๋ ์ด๋ค ์ฌ์ฌ๋๊ฐ ๋น์ด์์ด๋ ์์์๊ฐ์ด ๋ ์งง์ ์ฌ์ฌ๋๊ฐ ๋น ๋๊น์ง ๊ธฐ๋ค๋ ค์ ์ฌ์ฌ๋ฐ์ ๊ฒฝ์ฐ ๋ ์งง์ ์์์๊ฐ์ด ๋์ฌ ์๋ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ชจ๋ ์ฒดํฌํด์ฃผ๊ธฐ๊ฐ ์ฌ๋ ต๋ค๊ณ ๋๊ผ์ด์.
์ด๋ ๊ฒ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์๋ฅผ ํ๋์ฉ ๋ฐ์ ธ์ ์ต์ ์ ๋ต์ ๊ตฌํ๋ ๊ฒ์ด ์ด๋ ต๋ค๋ฉด, ๊ฑฐ๊พธ๋ก ์ต์ข ์ ์ผ๋ก ๊ตฌํด์ผ ํ๋ ๊ฒ(= ์ธ์ ์, ์์์๊ฐ)์ ๊ธฐ์ค์ผ๋ก ์ค์ ํ๊ณ ์ด๊ฒ์ด ์ต์ ์ ํด์ธ์ง ์ฒดํฌํด๋๊ฐ๋ ๋ฐฉ๋ฒ์ผ๋ก ํ ์ ์๊ฒ ๋ค! ๊ณ ๋๊ผ์ต๋๋ค.
์ ์ ์ฃผ๊ด์ ์ธ ๊ด์ ์ผ๋ก ์ด๋ถ ํ์์ ์๋ํด๋ณด๋ฉด ์ข์ ๋ฌธ์ ๋ค์ ํน์ง์ ํ ๋ฒ ๋ฝ์๋ดค๋๋ฐ์,
์ ๋ ์์ง ๋ง์ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด์ง ๋ชปํด์ ์๋ฐ ์กฐ๊ฑด๋ค์ด ์ ์ฉ๋์ง ์๋ ๋ฌธ์ ๋ค๋ ์์ ์ ์๊ฒ ์ง๋ง, ๋ค์ํ ๋ฌธ์ ๋ค์ ํ๋ฉด์ ์๋ฐ ๋ฌธ์ ๋ ์ด ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ ๊ทผํ๋ฉด ์ข๊ฒ ๋ค! ํ๋ ๊ฐ์ ์ตํ๊ฐ๋ ๊ฒ์ด ์ค์ํ ๊ฒ ๊ฐ์์. ๊ฒฐ๋ก ์ ๋ฌธ์ ๋ฅผ ๋ง์ด ํ์ด๋ณด์!