๐ ์ฝ๋ฉํ ์คํธ
โ๐ป Github
๋ฌธ์ ์ค๋ช
Leo๋ ์นดํซ์ ์ฌ๋ฌ ๊ฐ๋ค๊ฐ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ค์์๋ ๋ ธ๋์์ผ๋ก ์น ํด์ ธ ์๊ณ ํ ๋๋ฆฌ 1์ค์ ๊ฐ์์ผ๋ก ์น ํด์ ธ ์๋ ๊ฒฉ์ ๋ชจ์ ์นดํซ์ ๋ดค์ต๋๋ค.
Leo๋ ์ง์ผ๋ก ๋์์์ ์๊น ๋ณธ ์นดํซ์ ๋ ธ๋์๊ณผ ๊ฐ์์ผ๋ก ์์น ๋ ๊ฒฉ์์ ๊ฐ์๋ ๊ธฐ์ตํ์ง๋ง, ์ ์ฒด ์นดํซ์ ํฌ๊ธฐ๋ ๊ธฐ์ตํ์ง ๋ชปํ์ต๋๋ค.
Leo๊ฐ ๋ณธ ์นดํซ์์ ๊ฐ์ ๊ฒฉ์์ ์ brown, ๋ ธ๋์ ๊ฒฉ์์ ์ yellow๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ ์นดํซ์ ๊ฐ๋ก, ์ธ๋ก ํฌ๊ธฐ๋ฅผ ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๊ฐ์ ๊ฒฉ์์ ์ brown์ 8 ์ด์ 5,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ๋ ธ๋์ ๊ฒฉ์์ ์ yellow๋ 1 ์ด์ 2,000,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ์นดํซ์ ๊ฐ๋ก ๊ธธ์ด๋ ์ธ๋ก ๊ธธ์ด์ ๊ฐ๊ฑฐ๋, ์ธ๋ก ๊ธธ์ด๋ณด๋ค ๊น๋๋ค.
์ ์ถ๋ ฅ ์
brown | yellow | return |
10 | 2 | [4, 3] |
8 | 1 | [3, 3] |
24 | 24 | [8, 6] |
๋ฌธ์ ํ์ด
๋์ ํ์ด
import Foundation
func solution(_ brown:Int, _ yellow:Int) -> [Int] {
let n = brown + yellow
for i in 3...Int(sqrt(Double(n))) {
if n % i == 0 {
let x = n / i, y = i
if brown == ( 2 * x + 2 * y - 4 ) {
return [x, y]
}
}
}
return []
}
์ฐ์ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด์ ๋ฌธ์ ๋ฅผ ์ดํดํ๋๋ฐ ์๊ฐ์ด ์ข ๊ฑธ๋ ธ๋ ๊ฒ ๊ฐ๋ค.
๊ทธ๋์ ๋ญ ๊ตฌํ๋ผ๊ณ ํ๋ ๊ฑฐ์ง?!
์์๋ฅผ ๋ณด์๋ง์ ์ฝ์ ๊ตฌํ๋ ๋ฌธ์ ๋ผ๋ ๊ฒ์ ์ง๊ฐํ๋ค.
๋ ธ๋์ ์นดํซ์ ๊ฐ์ด ํญ์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ผ๋ ์กฐ๊ฑด์ด ์ฃผ์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ์ ์ผ ์์ ์ฝ์์ ๊ฐ์ 3์ผ ๊ฒ์ด๋ค.
3๋ถํฐ sqrt(n)๊น์ง๋ก ๊ณ์ฐ์ ํด ์์ ํ์์ผ๋ก ํ๊ธฐ๋ก ํ๋ค.
์ต๋๊ฐ์ธ 200,000 + 5,000 ์ ๊ฐ์ 205,000 ์ด๋ฏ๋ก sqrt(205,000) ๋ณด๋ค ์์ ๊ฐ์ฅ ํฐ ์ ์๋ 452 ์๊ธฐ ๋๋ฌธ์ 450ํ์ for๋ฌธ์ด๋ผ๋ฉด ์ถฉ๋ถํ ๋ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค!
์นดํซ์ ๋๋ฌ์ธ์ธ brown ๊ฐ์ ์์๋ง ๋ช ๊ฐ๋ง ๊ณ์ฐํด๋ด๋ ์ผ๋ฐํ ๊ณต์์ด ๋์๋ค → ( 2 * x + 2 * y - 4 )
ํผ ๊ฒฐ๊ณผ ์์๋๋ก ์ ๋ต! 10๋ถ์ ๋ ๊ฑธ๋ฆฐ ๊ฒ ๊ฐ๋ค!
๋ค๋ฅธ ์ฌ๋ ํ์ด
import Foundation
func solution(_ brown: Int, _ red: Int) -> [Int] {
for n in (1...Int(sqrt(Double(red)))).reversed() {
if (red/n+2) * (n+2) == (brown + red) {
return [(red/n+2), n+2]
}
}
return [0, 0]
}
์ ๊ตณ์ด reversed๋ฅผ ํ์ง ์๋ฌธ์ด๋ค. ์ถ๋ ฅ๋ง ๋ฐ๋๋ก ํด๋ ๋ ํ ๋ฐ!
์๋ก์ด ๊ณต์์ ์ฐพ์์ ํผ ๊ฒ ๊ฐ์์ ์ ๊ธฐํ๋ค!