각 난쟁이의 키를 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번째 인덱스가 제거되게 된다.