[알고리즘] 기초 문제 풀이 - 홀수
홀수
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
홀수를 판단하는 방법으로 가장 먼저 생각나는 것은, 2로 나눴을 때 나머지가 1인 숫자로 판단하는 것이다. 마땅한 내장 함수는 생각나지 않으니, 일단 이 방법으로 진행해보도록 하겠다.
내 풀이
function solution(arr) {
let answer = [];
let odds = [];
arr.forEach((item) => (item % 2 === 1 ? odds.push(item) : null));
odds.sort((a, b) => a - b);
const reducer = (accumulator, curr) => accumulator + curr;
const sum = odds.reduce(reducer);
const min = odds[0];
answer.push(sum);
answer.push(min);
return answer;
}
이제 와보니 코드가 복잡해보이고 가독성이 떨어져보인다. 배열에 관한 함수를 최대한 많이 사용하려고 노력하였다.
강사님 풀이
function solution(arr){
let answer=[];
let sum=0, min=1000;
for(let x of arr){
if(x%2===1){
sum+=x;
if(x<min) min=x;
}
}
answer.push(sum);
answer.push(min);
return answer;
}
강사님은 최솟값을 초기화할때 최대한 큰 숫자로 초기화하는 것을 선호한다. 강사님 풀이를 보니 내 코드를 조금 더 깔끔하게 만들 수 있을 것 같았다.
Author And Source
이 문제에 관하여([알고리즘] 기초 문제 풀이 - 홀수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@shinwonse/알고리즘-기초-문제-풀이-홀수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)