🗃️javascript/코테 프레임 문제

1-6 홀수(24년 업데이트)[reduce 에서 객체 안 값 사용시, 초기값 사용필수]

하얀성 2023. 9. 17. 11:51

문제

홀수 7개의 자연수가 주어질 때, 이들 중 홀수인 자연수들을 모두 골라 그 합을 구하고, 고른 홀수들 중 최소값을 찾는 프로그램을 작성하세요.

예를 들어, 7개의 자연수 12, 77, 38, 41, 53, 92, 85가 주어지면 이들 중 홀수는 77, 41, 53, 85이므로 그 합은 77 + 41 + 53 + 85 = 256 이 되고, 41 < 53 < 77 < 85 이므로 홀수들 중 최소값은 41이 된다.

 

▣ 입력설명 첫 번째 줄에 자연수 7개가 주어진다. 주어지는 자연수는 100보다 작다. 홀수가 한 개 이상 반드시 존재한다. ▣ 출력설명 첫째 줄에 홀수들의 합을 출력하고, 둘째 줄에 홀수들 중 최소값을 출력한다.

▣ 입력예제 1

12 77 38 41 53 92 85

▣ 출력예제 1

256

41

 

 

function solution(arr){
  let answer1 = 0;
  let answer2 = Number.MAX_SAFE_INTEGER;
  let oddNums = arr.filter(x => x % 2 !== 0);

  for(let x of oddNums){
    answer1 += x;
    if( x < answer2){
      answer2 = x;
    }
  }
  return [answer1, answer2];
}


arr=[12, 77, 38, 41, 53, 92, 85];
            console.log(solution(arr));

최소값을 Math.min(...arr)이나 Math.min(12,77,38 ...)로도 구할 수도 있다.

 


24.4.10.

function solution(arr) {
  let answer;
  let answer2;
  let odd = arr.filter((x) => x % 2 == 1);
  answer2 = odd.reduce((a, c) => a + c);
  answer = Math.min(...odd);
  return [answer2, answer];
}
arr = [12, 77, 38, 41, 53, 92, 85];
console.log(solution(arr));

 


객체 배열에서의 값 합산

객체로 이루어진 배열에 들어 있는 값을 합산하기 위해서는 반드시 초기값을 주어 각 항목이 여러분의 함수를 거치도록 해야 합니다.

JSCopy to Clipboard
var initialValue = 0;
var sum = [{ x: 1 }, { x: 2 }, { x: 3 }].reduce(function (
  accumulator,
  currentValue,
) {
  return accumulator + currentValue.x;
}, initialValue);

console.log(sum); // logs 6

화살표 함수(arrow function)로도 작성할 수 있습니다:

JSCopy to Clipboard
var initialValue = 0;
var sum = [{ x: 1 }, { x: 2 }, { x: 3 }].reduce(
  (accumulator, currentValue) => accumulator + currentValue.x,
  initialValue,
);

console.log(sum); // logs 6