๋ฌธ์
- ๊ฐ์์ผ๋ก ํ ๋๋ฆฌ๊ฐ 1์ค ๋๋ฌ์ ธ์๊ณ ์ค์์๋ ๋ ธ๋์์ด ์น ํด์ ธ ์๋ ์นดํซ์ด ์๋ค.
- ๊ฐ์ ๊ฒฉ์์ ์์ ๋ ธ๋์ ๊ฒฉ์์ ์๊ฐ ์ฃผ์ด์ง ๋, ์นดํซ์ ๊ฐ๋ก ์ธ๋ก ๊ท๊ฒฉ์ ๋ฐํํ๋ผ.
๋ฌธ์ ํ์ด
1. ์ฃผ์ด์ง ๋ ธ๋์ ๊ฒฉ์๋ก ๋ง๋ค ์ ์๋ ๋ชจ๋ [๊ฐ๋ก, ์ธ๋ก]๋ฅผ ์ํํ๋ค.
2. ๊ทธ๋ ๊ฒ ์ฌ๊ฐํ ์ค ๋๋ ์ ๊ธธ์ด๊ฐ ๊ฐ์ ๊ฒฉ์์ ์์ ๊ฐ์ ๊ฒ์ด ์์ผ๋ฉด ์ ๋ต์ ์ฐพ์ ๊ฒ.
3. ๋ ธ๋์ ์ฌ๊ฐํ์ ๊ฐ๋ก ์ธ๋ก๋ฅผ ๋ฐํํ๋๊ฒ ์๋๋ผ, ๊ฑฐ๊ธฐ์ ๊ฐ์ ๊ฒฉ์๊น์ง ํฉํ์๋์ ๊ฐ๋ก ์ธ๋ก ํฌ๊ธฐ๋ฅผ ๋ฐํํด์ผํ๋ฏ๋ก ๋ ธ๋ ์ฌ๊ฐํ์ ๊ฐ๋ก ์ธ๋ก ๊ธธ์ด์ 2์ฉ ๋ํด์ค๋ค.
function solution(brown, yellow) {
let y = 0
while (++y) {
const x = yellow / y
if (y > x) {
break
}
const perimeter = 4 + y*2 + x*2
if (x%1 === 0 && perimeter === brown) {
return [x + 2 , y + 2]
}
}
}
์๊ฐ๋ณต์ก๋: yellow๋ฅผ n์ผ๋ก ์ก๊ณ ๊ณ์ฐํ๋ฉด O(n). yellow๊ฐ 2000000 ์ดํ๋ก ์ ํ๋์ด์์ผ๋ฏ๋ก O(1).
๊ณต๊ฐ๋ณต์ก๋: O(1)