๐ ๋ฌธ์
์๋น๋ฅผ ํผํด ์ผ๊ณฑ ๋์์ด๋ค๊ณผ ํจ๊ป ํํ๋กญ๊ฒ ์ํํ๊ณ ์๋ ๋ฐฑ์ค๊ณต์ฃผ์๊ฒ ์๊ธฐ๊ฐ ์ฐพ์์๋ค. ์ผ๊ณผ๋ฅผ ๋ง์น๊ณ ๋์์จ ๋์์ด๊ฐ ์ผ๊ณฑ ๋ช ์ด ์๋ ์ํ ๋ช ์ด์๋ ๊ฒ์ด๋ค. ์ํ ๋ช ์ ๋์์ด๋ ๋ชจ๋ ์์ ์ด "๋ฐฑ์ค ๊ณต์ฃผ์ ์ผ๊ณฑ ๋์์ด"์ ์ฃผ์ธ๊ณต์ด๋ผ๊ณ ์ฃผ์ฅํ๋ค. ๋ฐ์ด๋ ์ํ์ ์ง๊ด๋ ฅ์ ๊ฐ์ง๊ณ ์๋ ๋ฐฑ์ค๊ณต์ฃผ๋, ์ผ๊ณฑ ๋์์ด์ ํค์ ํฉ์ด 100์ด ๋จ์ ๊ธฐ์ตํด ๋๋ค.
์ํ ๋์์ด์ ํค๊ฐ ์ฃผ์ด์ก์ ๋, ๋ฐฑ์ค๊ณต์ฃผ๋ฅผ ๋์ ์ผ๊ณฑ ๋์์ด๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค.
์ด์ค for๋ฌธ์ ์ฌ์ฉํ์ฌ 2๊ฐ์ ์์ฐ์๋ฅผ ๋ฝ์ ํ 9๊ฐ์ ์์ฐ์ ํฉ(sum)์์ ๋บ ๊ฐ์ด 100์ด ๋์ด์ผ ํ๋ค.
๊ฐ์๋๋ก splice() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด๋ ๋์ง๋ง filter() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ๋ฅผ ํต๊ณผํ๋ ์์๋ค๋ก ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํด ๋ฐํํด์ฃผ๋ ๋ฐฉ์์ผ๋ก๋ ํ ์ ์๋ค.
๐ ํ์ด
// splice() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ฝ๋
function solution(arr) {
let answer = arr;
let sum = answer.reduce((a, b) => a + b, 0);
for (let i = 0; i < 8; i++) {
for (let j = i + 1; j < 9; j++) {
if (sum - (answer[i] + answer[j]) === 100) {
// i๋ฅผ ๋จผ์ ์ ๊ฑฐํ๋ฉด ๋ค์ ๊ฐ๋ค์ด ์์ผ๋ก ๋น๊ฒจ์ง๋ฉด์ answer[j]์ ๊ฐ์ด ๋ณ๊ฒฝ ๋โ
answer.splice(j, 1);
answer.splice(i, 1);
}
}
}
return answer;
}
let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13];
console.log(solution(arr));
// filter() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ฝ๋
function solution(arr) {
let answer;
let sum = arr.reduce((sum, v) => sum + v, 0);
for (let i = 0; i < arr.length - 1; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (sum - (arr[i] + arr[j]) === 100) {
answer = arr.filter((v, idx) => {
if (idx === i || idx === j) return false;
else return true;
});
break;
}
}
}
return answer;
}
let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13];
console.log(solution(arr));
๐ก Array.prototype.splice()
๋ฐฐ์ด์ ๊ธฐ์กด ์์๋ฅผ ์ญ์ ๋๋ ๊ต์ฒดํ๊ฑฐ๋ ์ ์์๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐฐ์ด์ ๋ด์ฉ์ ๋ณ๊ฒฝํ๋ ํจ์์ด๋ค.
๐ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํด ๋ฐํํ๋ ๊ฒ์ด ์๋ ๋ฐฐ์ด์ ๊ธฐ์กด ์์๋ฅผ ๋ณ๊ฒฝ โ
const days = ['Mon', 'Wed', 'Thu', 'Fri'];
days.splice(1, 0, 'Tue');
// inserts at index 1
console.log(days);
// expected output: Array ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
1๏ธโฃ ๋ฒ์งธ ์ธ์ - ๋ฐฐ์ด์ ๋ณ๊ฒฝ์ ์์ํ ์ธ๋ฑ์ค, ๋ฐฐ์ด์ ๊ธธ์ด๋ณด๋ค ํฐ ๊ฐ์ด๋ผ๋ฉด ์ค์ ์์ ์ธ๋ฑ์ค๋ ๋ฐฐ์ด์ ๊ธธ์ด๋ก ์ค์ ํ๋ค. ์์์ธ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ๋์์๋ถํฐ ์์๋ฅผ ์ธ์ด๋๊ฐ๋ค.
2๏ธโฃ ๋ฒ์งธ ์ธ์ - ๋ฐฐ์ด์์ ์ ๊ฑฐํ ์์์ ์, ์๋ตํ๊ฑฐ๋ ๊ฐ์ด (๋ฐฐ์ด์ ๊ธธ์ด - 1๏ธโฃ ๋ฒ์งธ ์ธ์ ๊ฐ) ๋ณด๋ค ํฌ๋ฉด 1๏ธโฃ ๋ฒ์งธ ์ธ์์ ๊ฐ ๋ถํฐ์ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐํ๋ค. 0 ์ดํ๋ผ๋ฉด ์ด๋ค ์์๋ ์ ๊ฑฐํ์ง ์๋๋ค. ์ด ๋๋ ์ต์ํ ํ๋์ ์๋ก์ด ์์๋ฅผ ์ง์ ํด์ผ ํ๋ค.
3๏ธโฃ ๋ฒ์งธ ์ธ์ ์ด์ - ๋ฐฐ์ด์ ์ถ๊ฐํ ์์, ์๋ฌด ์์๋ ์ง์ ํ์ง ์์ผ๋ฉด splice()๋ ์์๋ฅผ ์ ๊ฑฐํ๊ธฐ๋ง ํ๋ค.
๐ ๋ฐํ ๊ฐ - ์ ๊ฑฐํ ์์๋ฅผ ๋ด์ ๋ฐฐ์ด, ํ๋์ ์์๋ง ์ ๊ฑฐํ ๊ฒฝ์ฐ ๊ธธ์ด๊ฐ 1์ธ ๋ฐฐ์ด์ ๋ฐํ, ์๋ฌด ๊ฐ๋ ์ ๊ฑฐํ์ง ์์์ผ๋ฉด ๋น ๋ฐฐ์ด์ ๋ฐํํ๋ค.
๐ ์ฐธ๊ณ ์ฌ์ดํธ
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
'Algorithm > ์ธํ๋ฐ(inflearn)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript/section 1] 10 - ๋ฌธ์ ์ฐพ๊ธฐ (0) | 2022.09.02 |
---|---|
[JavaScript/section 1] 09 - A๋ฅผ #์ผ๋ก (0) | 2022.09.01 |
[JavaScript/section 1] 07 - 10๋ถ์ (0) | 2022.08.31 |
[JavaScript/section 1] 06 - ํ์ (0) | 2022.08.31 |
[JavaScript/section 1] 05 - ์ต์๊ฐ ๊ตฌํ๊ธฐ (0) | 2022.08.30 |