๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution/Programmers

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ตฌ๋ช…๋ณดํŠธ

by Fomagran ๐Ÿ’ป 2022. 4. 11.
728x90
๋ฐ˜์‘ํ˜•

 

Problem

 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๊ตฌ๋ช…๋ณดํŠธ

๋ฌด์ธ๋„์— ๊ฐ‡ํžŒ ์‚ฌ๋žŒ๋“ค์„ ๊ตฌ๋ช…๋ณดํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌ์ถœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ช…๋ณดํŠธ๋Š” ์ž‘์•„์„œ ํ•œ ๋ฒˆ์— ์ตœ๋Œ€ 2๋ช…์”ฉ ๋ฐ–์— ํƒˆ ์ˆ˜ ์—†๊ณ , ๋ฌด๊ฒŒ ์ œํ•œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ๋žŒ๋“ค์˜ ๋ชธ๋ฌด๊ฒŒ๊ฐ€ [70kg, 50kg, 80kg, 5

programmers.co.kr


Solution

 

1.  ์‚ฌ๋žŒ์˜ ๋ฌด๊ฒŒ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

 

    let sorted = people.sort((a,b) => a-b)

 

2. ์ •๋ ฌํ•œ ๋ฌด๊ฒŒ์˜ ์‹œ์ž‘๊ณผ ๋์„ ์ง€์ •ํ•ด์ค€๋‹ค.

 

    let start = 0
    let end = people.length - 1

 

3. ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ๋ถ€ํ„ฐ ๊ฐ€์žฅ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ์„ ์ฐจ๋ก€๋กœ ์—ฐ๊ฒฐ์ง“๋Š”๋‹ค.

 

๋งŒ์•ฝ ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ๊ณผ ๊ฐ€์žฅ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ์„ ์—ฐ๊ฒฐ์ง€์—ˆ๋Š”๋ฐ limit๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ๊ฐ™์ด ๋ณดํŠธ๋ฅผ ํƒˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์ด๋ฏ€๋กœ ๊ฐ€์žฅ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ์˜ ์œ„์น˜๋ฅผ +1 ํ•ด์ค˜ ๊ฐฑ์‹ ํ•ด ์ค๋‹ˆ๋‹ค.

 

๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ ํ˜ผ์ž๋งŒ ํƒˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์ด๋ฏ€๋กœ ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ์„ -1 ํ•ด์ค˜ ๊ฐฑ์‹ ํ•ด ์ค๋‹ˆ๋‹ค.

 

๋‘˜์ด ํƒ”์„ ๊ฒฝ์šฐ, ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ ํ˜ผ์ž ํƒ”์„ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋ณดํŠธ๋ฅผ ์ด์šฉํ•œ ๊ฒƒ์ด๋ฏ€๋กœ answer๋ฅผ +1 ํ•ด์ค๋‹ˆ๋‹ค.

 

    while (start < end) {
        if (sorted[start] + sorted[end] <= limit) {
            start += 1
        }
        end -= 1
        answer += 1
    }

 

4. ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ๊ณผ ๊ฐ€์žฅ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ์ด ๋™์ผํ•œ ๊ฒฝ์šฐ answer +1 ํ•ด์ค€๋‹ค.

 

์ด ๊ฒฝ์šฐ๋Š” ํ˜ผ์ž๋งŒ ๋‚จ์€ ๊ฒฝ์šฐ์ด๋ฏ€๋กœ answer์— +1์„ ํ•ด์ค๋‹ˆ๋‹ค.

 

    return start == end ? answer + 1 : answer;

Source Code

 

<script src="https://gist.github.com/fomagran/3698fa776a36a1e8ec0515d4ba8794af.js"></script>
728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€