일곱난쟁이

지창언·2022년 7월 24일

codingTest

목록 보기
8/29

Index
1.문제
2.내 코드
3.발전시킨 코드


문제

각 난쟁이의 키를 9개 입력받는다. 그 중, 더해서 100이 되는 7개의 수를 출력하라.
입력 : 9 난쟁이의 키를 가진 배열
출력 : 합이 100이 되는 7 난쟁이의 키를 가진 배열


내 코드

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(arr){
                let arr2 = [...arr];
                let max = arr.reduce((acc,cur)=>{
                    return acc+cur;
                })
                console.log(max);
                for(let i=0; i<arr2.length-1;i++){
                    for(let j=i+1; j<arr2.length;j++){
                        if(max-(arr2[i]+arr2[j])===100){
                            arr2.splice(j,1);
                            arr2.splice(i,1);
                        }
                    }
                }
                return arr2;
            }
            
            let arr=[20, 7, 23, 19, 10, 15, 25, 8, 13];
            console.log(solution(arr));
        </script>
    </body>
</html>

reduce를 통해 9 난쟁이의 키의 총 합을 구한다. (max)
중첩 for문을 통해 각 요소를 두개 씩 뽑아서 해당 값을 총 합에서 뺀다(max-(a+b))
해당 값이 100이라면 각 요소를 배열에서 제외시키고 나머지를 반환한다.

주의사항 ❗️
두 개의 요소를 배열에서 제거할 때, j번째 인덱스 부터 제거 후 i번째 인덱스를 제거해야 정상적으로 제거가 된다.
(i<j) 이므로, 먼저 순서인 i번째 인덱스부터 제거하게 되면 j번째 인덱스 요소를 제거하려 할 때, j+1번째 인덱스가 제거되게 된다.


profile
프론트엔드 개발자가 되고 싶은...

0개의 댓글