본문 바로가기

알고리즘

JS | 홀수값 구해서 더하기 / 홀수 중 최솟값

❓7개의 자연수가 있을 때, 홀수인 자연수를 모두 골라서 합을 구하고,

그 홀수들 중 최솟값을 찾으시오.

 

        function solution(arr) {
            let answer=[];
            
            return answer;
        }

이번 문제는 답을 두 개 리턴해야하니까

answer에다가 답 두 개를 푸쉬해서 배열을 리턴할 것이다.

 

이제는 for문이 아닌, for of문(반복 수행)을 사용할 것이다.

 

            let answer=[];
            let sum=0, min=Number.MAX_SAFE_INTEGER;
            for(let x of arr){
                if(x%2 === 1){
                }
            }
            return answer;
        }

보기 쉽게  x 변수를 설정해서 arr의 값을 받아온다.

그리고 그 x를 %2해서 1이 남는다면 홀수니까 더해준다.

 

그리고 sum 변수를 만들어주고 초기값을 0으로 설정.

min 변수도 만들어줘서 초기값을 안전하게 가장 큰 수로 설정해준다.

 

 

sum+=x;

누적할 때는 

sum=sum+x;

이런식으로 작성이 가능하지만,

sum+=x;이렇게 축약 형태로도 가능하다.

 

+= 자체가 연산자 한 개이다.

 

첫번째 식은 연산을 두 번하는것이고

+=로 하면 한 번 하는 것!

 

 

        function solution(arr) {
            let answer=[];
            let sum=0, 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;
        }

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

그리고 그 홀수중에 최솟값을 구해야 하니까

x<min , min=x;라고 해준다.

 

그리고 각각 sum과 min을 answer에 push해준다.

 

'알고리즘' 카테고리의 다른 글

JS | 일곱 난쟁이 찾아내기  (0) 2021.08.30
JS | 10부제 위반 차량 출력하기  (0) 2021.08.23
JS | 최솟값 구하기  (0) 2021.08.18
JS | 1부터 N까지 합 출력하기  (0) 2021.08.17
JS | 연필개수  (0) 2021.08.12