1-6) 홀수

김예지·2021년 8월 25일
0

문제

7개의 자연수가 주어질 때, 이들 중 홀수인 자연수들을 모두 골라 그 합을 구하고, 고른 홀수들 중 최소값을 찾는 프로그램을 작성하세요.
예를 들어 7개의 자연수 12, 77, 38, 41, 53, 92, 85가 주어지면 이들 중 홀수는 77, 41, 53, 58이므로 그 합은
77 + 41 + 53 + 85 = 256이 되고,
41 < 53 < 77 < 85 이므로 홀수들 중 최소값은 41이 된다.
[입력설명]
첫 번째 줄에 자연수 7개가 주어진다. 주어지는 자연수는 100보다 작다. 홀수가 한 개 이상 반드시 존재한다.
[출력설명]
첫째 줄에 홀수들의 합을 출력하고, 둘째 줄에 홀수들 중 최소값을 출력한다.

입력예제 1

12 77 38 41 53 92 85

출력예제 1

256
41


문제 풀이

예습 이론

  • 답을 두개 리턴해야할때는, 배열로 초기화해준다. (let answer=[])
  • x%2===1: 홀수의 조건 (x%2===0: 짝수의 조건)
  • answer.push(sum): answer배열에 sum변수를 push(집어넣는다)

코드

(1) 홀수 찾기
(2) 홀수 합 구하기
(3) MATH.min 내장함수 활용하여, 홀수 최소값 구하기

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(arr){
                let answer=[]; //답 두개를 리턴해야하기 때문에 배열로 초기화
                let sum=0, min=Number.MAX_SAFE_INTEGER;
                //for of 반복문: 요소의 값 반복
                //==과 ===중 하나로 통일할 것!(=== 추천)
                for(let x of arr){
                    if(x%2===1){
                        sum+=x; //할당연산자가 좀 더 빠름(권장)
                        if(x<min) min=x; //첫번째 인덱스에서는 무조건 조건식 만족!(MAX_SAFE_INTEGER로 min을 큰 숫자로 초기화했기 때문)
                    }
                }
                answer.push(sum);
                answer.push(min);
                return answer;
            }
            
            arr=[12, 77, 38, 41, 53, 92, 85];
            console.log(solution(arr));
        </script>
    </body>
</html>

결과

256
41

profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

2개의 댓글

comment-user-thumbnail
2021년 9월 10일

9/10
sum=0 하지 않으면, NaN으로 출력됨(초기화안한것에 누적해서 숫자를 더하면, NaN이 됨)

답글 달기
comment-user-thumbnail
2022년 11월 23일

11/23

function solution(arr) {
  const newArr = arr.filter(v => v % 2 === 1).sort((a, b) => a - b);
  const min = newArr[0];
  const sum = newArr.reduce((a, c) => a + c, 0);
  
  return [sum, min];
}

solution([12, 77, 38, 41, 53, 92, 85]);
답글 달기