1. ๋ฌธ์
1.1. ์ ์ถ๋ ฅ ์์
2. ํ์ด
2.1. for๋ฌธ์ผ๋ก ํ๊ธฐ
2.2. reduce ๋ฉ์๋๋ก ํ๊ธฐ

1. ๋ฌธ์
S์ฌ์์๋ ๊ฐ ๋ถ์์ ํ์ํ ๋ฌผํ์ ์ง์ํด ์ฃผ๊ธฐ ์ํด ๋ถ์๋ณ๋ก ๋ฌผํ์ ๊ตฌ๋งคํ๋๋ฐ ํ์ํ ๊ธ์ก์ ์กฐ์ฌํ์ต๋๋ค. ๊ทธ๋ฌ๋, ์ ์ฒด ์์ฐ์ด ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ถ์์ ๋ฌผํ์ ๊ตฌ๋งคํด ์ค ์๋ ์์ต๋๋ค. ๊ทธ๋์ ์ต๋ํ ๋ง์ ๋ถ์์ ๋ฌผํ์ ๊ตฌ๋งคํด ์ค ์ ์๋๋ก ํ๋ ค๊ณ ํฉ๋๋ค.
๋ฌผํ์ ๊ตฌ๋งคํด ์ค ๋๋ ๊ฐ ๋ถ์๊ฐ ์ ์ฒญํ ๊ธ์ก๋งํผ์ ๋ชจ๋ ์ง์ํด ์ค์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด 1,000์์ ์ ์ฒญํ ๋ถ์์๋ ์ ํํ 1,000์์ ์ง์ํด์ผ ํ๋ฉฐ, 1,000์๋ณด๋ค ์ ์ ๊ธ์ก์ ์ง์ํด ์ค ์๋ ์์ต๋๋ค.
๋ถ์๋ณ๋ก ์ ์ฒญํ ๊ธ์ก์ด ๋ค์ด์๋ ๋ฐฐ์ด d์ ์์ฐ budget์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ต๋ ๋ช ๊ฐ์ ๋ถ์์ ๋ฌผํ์ ์ง์ํ ์ ์๋์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
1.1. ์ ์ถ๋ ฅ ์์
d | budget | result |
[1,3,2,5,4] | 9 | 3 |
[2,2,3,3] | 10 | 4 |
2. ํ์ด
๋ฌธ์ ๊ฐ ๊ฝค ๊ธด ํธ์ด์ง๋ง ๊ฒฐ๊ตญ ์ต๋ ๋ช ๊ฐ์ ๋ถ์์ ๋ฌผํ์ ์ง์ํ ์ ์๋์ง๋ฅผ ๋ฌป๊ณ ์๋ค.
์ ์ฒญํ ๊ธ์ก์ด ์ ์ ๋ถ์๋ฅผ ์ฐ์ ์ผ๋ก ํด์ผ ๋ ๋ง์ ๋ถ์์ ์ง์ํ ์ ์์ผ๋ ์ผ๋จ ์ฃผ์ด์ง ๋ฐฐ์ด์ ๋ํด ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ด ํ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ budget์์ d์ ์์๋ฅผ ํ๋์ฉ ๋นผ์ฃผ๋ฉด์ ์นด์ดํธ๋ฅผ ํ๋์ฉ ๋๋ ค๊ฐ๊ณ budget์ด 0์ด ๋๋ฉด ์นด์ดํธ๋ฅผ ๋ฆฌํด!
reduce๋ก ํ๊ณ ์ถ์์ง๋ง ์๊ฐ์ฒ๋ผ ์ ์๋์ด์ ์ฒ์์๋ for๋ฌธ์ ์ด์ฉํด์ ํ์๋ค.
2.1. for๋ฌธ์ผ๋ก ํ๊ธฐ
function solution(d, budget){
d.sort((a,b) => a-b);
for (let i = 0; i < d.length; i++) {
budget -= d[i];
answer += 1;
if (budget < 0){
answer--;
break;
}
}
return answer;
}
์ดํ ๋ค๋ฅธ ์ฌ๋๋ค์ ํ์ด๋ฅผ ๋ณด๊ณ reduce๋ก ๋ค์ ํ์๋ค.
2.2. reduce ๋ฉ์๋๋ก ํ๊ธฐ
function solution(d, budget) {
var answer = d.sort((a,b) => a - b).reduce((acc, curr) => acc + ((budget -= curr) >= 0), 0);
return answer;
}
reduce ๋ฉ์๋๋ฅผ ์ด์ฉํด์ acc
์ ์ง์ํ๊ธฐ๋ก ํ ๋ถ์๋ฅผ ์นด์ดํธํ๋ค.
0๋ณด๋ค ์์ง ์์ ๋๊น์ง budget์์ ํ์ฌ ๊ฐ์ ๋บ๋ค๋ ์กฐ๊ฑด.
์ด๋ฒ ๊ธฐํ์ reduce ํจ์๋ฅผ ๋ช ๋ฒ ๋ฐ๋ณตํ๋ค ๋ณด๋ ์ข ๋ ์ต์ํด์ง ๊ฒ ๊ฐ๋ค.
reduce ํจ์์ ๋ํด์๋ ์๋๋ฅผ ์ฐธ๊ณ !
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
Array.prototype.reduce() - JavaScript | MDN
reduce() ๋ฉ์๋๋ ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฃผ์ด์ง ๋ฆฌ๋์ (reducer) ํจ์๋ฅผ ์คํํ๊ณ , ํ๋์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํฉ๋๋ค.
developer.mozilla.org
'๐ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค : OXํด์ฆ (0) | 2022.12.12 |
---|---|
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค : ๋ฐฐ์ด ํ์ ์ํค๊ธฐ (2) | 2022.12.02 |
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค : ์ต๋น๊ฐ ๊ตฌํ๊ธฐ (2) | 2022.11.15 |
์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋์ Big-O (3) | 2022.04.29 |
[JS] ์๊ณ ๋ฆฌ์ฆ : ๋๋ฌด ๊ทธ๋ฆฌ๊ธฐ (๋ณ์ฐ๊ธฐ) (0) | 2022.04.18 |
Comment