[JS] ํ๋ก๊ทธ๋๋จธ์ค ๊ตฌ๋ช ๋ณดํธ
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>