천진난만 코딩 스토리

1-8. 일곱 난쟁이 본문

코딩테스트.js/자바스크립트 알고리즘 문제풀이 입문 (인프런)

1-8. 일곱 난쟁이

Wisdom_1104 2022. 12. 27. 02:51

 

-코드-

  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