๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿบ ๋งค์ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์นดํŽซ level 2

๋ฌธ์ œ

  • ๊ฐˆ์ƒ‰์œผ๋กœ ํ…Œ๋‘๋ฆฌ๊ฐ€ 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)