천진난만 코딩 스토리
1-8. 일곱 난쟁이 본문
-코드-
function solution(arr) {
let answer = arr;
let sum = answer.reduce((a, b) => a + b, 0);
for (let i = 0; i < answer.length - 1; i++) {
for (let j = i + 1; j < answer.length; j++) {
if (sum - (answer[i] + answer[j]) == 100) {
answer.splice(j, 1);
answer.splice(isFinite, 1);
}
}
}
return answer;
}
let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13];
console.log(solution(arr));
-풀이과정-
let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13]; 를 하여
난쟁이의 키를 받음.
function solution(arr) 를 하여
배열을 불러오고
let answer = arr; 를 하여
answer에 arr을 넣어주어 answer과 arr을 동일하게 해줌.
let sum = answer.reduce((a, b) => a + b, 0); 를 하여
sum에
answer.reduce((a, b) => a + b, 0)를 하여
a인 누적값에 b인 현재값을 a+b를 하여 더해주는데 0에서부터 더해줌.
(reduce 는 배열의 각 요소에 대해 주어진 리듀서 함수를 실행하고, 하나의 결과값을 반환하는 함수)
for (let i = 0; i < answer.length - 1; i++) 를 하여
i는 0부터 시작하여 배열의 길이보다 1 적을 때 까지 i+1을 반복해줌.
for (let j = i + 1; j < answer.length; j++) 를 하여
j는 0부터 배열의 길이만큼 될 때 까지 j+1을 반복해줌.
if (sum - (answer[i] + answer[j]) == 100) 를 하여
sum인 모든 수를 더한 값에서 answer[i]와 answer[j]를 더한 값을 뺀 값이 100이 되면
answer.splice(j, 1); 를 하여
j번째의 값을 1개 빼줌.
즉, 가짜 난쟁이 하나를 값에서 뺌.
answer.splice(i, 1); 를 하여
i번째의 값을 1개 빼줌.
즉, 가짜 난쟁이 하나를 값에서 뺌.
(splice 는 배열의 기존 요소를 삭제 또는 교체 혹은 새 요소를 추가하여 배열의 내용을 변경하는 함수)
'코딩테스트.js > 자바스크립트 알고리즘 문제풀이 입문 (인프런)' 카테고리의 다른 글
1-10. 문자 찾기 (0) | 2023.01.04 |
---|---|
1-9. A를 #으로 (0) | 2023.01.02 |
1-7. 10부제 (0) | 2022.12.24 |
1-6. 홀수 (0) | 2022.12.24 |
1-5. 최솟값 구하기 (0) | 2022.12.21 |