알고리즘 | 홀수

sik2·2021년 10월 18일
0

Algorithm

목록 보기
7/10

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

나의 풀이

const nums = [12, 77, 38, 41, 53, 92, 85];

const soluation = function (nums) {

  const oddNums = nums.filter(num => num % 2 === 1);

  const min = Math.min.apply(null, oddNums);

  const sum = oddNums.reduce((acc, current) => acc + current, 0);

  return `최소값 ${min} 홀수 요소의 합 ${sum}`;
}

console.log(soluation(nums));
  • 먼저 filter() 메서드를 활용해 홀 수 배열만 담는다.
  • 홀수 배열에서 최소값을 찾고 reduce() 메서드를 활용해 배열 요소의 합을 구한다.

답안 풀이

function solution(arr) {
  let answer = [];
  let sum = 0;
  let min = Number.MAX_SAFE_INTEGER;

  for (let x of arr) {
    if (x % 2 === 1) {
      sum += x;
      if (x < min) min = x;
    }
  }

  answer.push(sum);
  answer.push(min);
  return answer;
}

  • for 문을 활용해 요소를 순회하며 홀수 요소를 찾는다
  • Number.MAX_SAFE_INTEGER 값을 이용해 min 변수를 초기화 한다.
  • 홀수를 찾으면 더하기를 하고 최소 값을 찾는다
profile
기록

0개의 댓글