문제
- 7개의 자연수가 주어질 때, 이들 중 홀수인 자연수들을 골라 그 합을 구하고, 고른 홀수들 중 최솟값을 찾는 프로그램을 작성하세요.
- 첫 번째 줄에 자연수 7개가 주어진다
- 주어지는 자연수는 100보다 작다
- 홀수가 한 개 이상 반드시 존재한다.
- 첫째 줄에 홀수들의 합을 출력하고, 둘째 줄에 홀수들 중 최솟값을 출력한다.
풀이
function solution(a, b, c, d, e, f, g) {
const numArray = [a, b, c, d, e, f, g];
const filterArray = [];
numArray.map(num => {
num % 2 !== 0
&& filterArray.push(num);
})
const answerSum = filterArray.reduce((prev, next) => prev + next);
const answerMin = Math.min(...filterArray);
return `${answerSum}\n${answerMin}`;
}
console.log(solution(12, 77, 38, 41, 53, 92, 85));
느낀점
array.map
과 array.reduce
메서드를 활용해서 문제를 풀었습니다.
- 지금 다시 리팩토링한다면
num % 2 !== 0
부분을 num & 2 === 1
로 바꿀 것 같습니다.
- 최솟값을 구할 때
Math.min()
메서드 안에 스프레드 연산자를 넣어서 배열의 값을 나열하도록 했습니다.
- 블로그에 쓰려고 보니 '스프레드 연산자(Spread Operator)'라는 단어가 갑자기 생각나지 않아서 검색했습니다.
- 다른 사람에게 설명하기 위해서라도 용어를 더 확실하게 익혀야 겠다고 느꼈습니다.
Comments