인프런 커뮤니티 질문&답변
이번 강의의 답은 기본적으로 모든 케이스에 적용되지 않는 것 같습니다.
작성
·
409
8
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문을 추가해야 올바른 정답이 아닌가 싶습니다.
퀴즈
세 수 중 최솟값을 찾을 때, if 문만 사용한다면 어떤 방식으로 비교하는 것이 일반적인가요?
세 수를 한 번에 비교하여 가장 작은 수를 바로 찾습니다.
두 수의 최솟값을 먼저 찾고, 그 결과와 나머지 한 수를 비교합니다.
가장 큰 수를 먼저 찾은 후, 남은 두 수 중 작은 값을 찾습니다.
모든 가능한 쌍을 비교하여 가장 작은 값을 찾습니다.





