반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

일곱 난쟁이 본문

반응형

 

해결법

이 문제에서 난쟁이가 아닌 2명을 찾기 위해서는 일일히 다 찾아봐야 한다. 따라서 처음 배열의 모든 합을 구하고 다른 난쟁이를 찾기 위해서  이중 for문을 사용한다. 그리고 2개씩 고르면서 미리 구해놨던 합에서 for문에서 찾은 2개의 값을 빼서 100이되면 정답이다.

 

코드

<html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function solution(arr) {
        let answer = arr;

        let sum = arr.reduce((a, b) => a + b);

        for (let i = 0; i < 8; i++) {
          for (let j = i + 1; j < 9; j++) {
            if (sum - (arr[i] + arr[j]) === 100) {
              // 뒤에꺼부터 삭제해야 인덱스 번호가 변경되는 것에 영향을 주지 않음
              arr.splice(j, 1);
              arr.splice(i, 1);
            }
          }
        }
        return arr;
      }

      let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13];
      console.log(solution(arr));
    </script>
  </body>
</html>

splice를 사용하면 배열에서 값을 제거할 수 있다. 그리고 뒤에꺼부터 제거해야 인덱스 번호에 영향을 안준다.

반응형

'코딩테스트 with JS > 자바스크립트 알고리즘 문제풀이(인프런)' 카테고리의 다른 글

대문자 찾기  (0) 2022.08.07
문자 찾기  (0) 2022.08.06
A를 #으로  (0) 2022.08.05
JS 기본 문법 정리  (1) 2022.08.03
10부제  (0) 2022.08.02
Comments