function solution(arr) {
let answer = arr;
let sum = arr.reduce((a, b) => a + b, 0);
for (let i = 0; i < 8; i++) {
for (let j = i + 1; j < 9; j++) {
if (sum - (answer[i] + answer[j]) === 100) {
answer.splice(j, 1);
answer.splice(i, 1);
}
}
}
return answer;
}
let arr = [20, 7, 23, 19, 10, 15, 28, 8, 13];
console.log(solution(arr));
// 이렇게 배열의 요소 중에서 25를 28로 바꾸면
// [ 7, 19, 10, 8, 13 ] 로 출력이 됩니다.
// 이런 경우 sum - (answer[i] + answer[j]) === 100
// 라는 조건을 두 번 만족시켜서 그런 것 같습니다.
function solution(arr) {
let answer = arr;
let sum = arr.reduce((a, b) => a + b, 0);
endOfCircuit: for (let i = 0; i < 8; i++) {
for (let j = i + 1; j < 9; j++) {
if (sum - (answer[i] + answer[j]) === 100) {
answer.splice(j, 1);
answer.splice(i, 1);
break endOfCircuit;
}
}
}
return answer;
}
let arr = [20, 7, 23, 19, 10, 15, 28, 8, 13];
console.log(solution(arr));
// [ 7, 19, 10, 15, 28, 8, 13]
// 조건을 한번만 찾아도 종료시키는
// break문을 추가해야 올바른 정답이 아닌가 싶습니다.