5_hyun
2022. 8. 5. 21:13
반응형
해결법
이 문제에서 난쟁이가 아닌 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를 사용하면 배열에서 값을 제거할 수 있다. 그리고 뒤에꺼부터 제거해야 인덱스 번호에 영향을 안준다.
반응형