2021/12/13) 6. 홀수

굥굥이·2021년 12월 13일
0
post-thumbnail

1. 문제

<홀수>
: 7개의 자연수가 주어질 때, 이들 중 홀수인 자연수들을 모두 골라 그 합을 구하고,
고른 홀수들 중 최소값을 찾는 프로그램을 작성하세요.
첫 번째 줄에 홀수들의 합을 출력하고, 둘째 줄에 홀수들 중 최솟값을 출력하도록 하시오.

2. 해결 방법

  1. 두 개(합, 최솟값)를 출력해야 하므로, answer을 배열로 선언한다. 그리고 합한 값을 담을 변수(sum)과 최솟값을 담을 변수(min)을 선언한다.
  2. for of 문으로 배열을 돌리고, if문으로 홀수만 추출한 후, 거기에서 홀수의 합과 홀수들 중의 최솟값을 구한다.

! 플러스 개념
-> 반복문!

  • for...of : 배열에 관한 반복문(배열내장함수로도 구현 가능)
  • for...in : 객체에 관한 반복문

3. 정답

        <script>
            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));
        </script>

4. 내 코드와 비교 그리고 반성

나는 홀수만을 담는 배열 변수, 그리고 앞의 배열의 모든 인자들을 합한 값을 넣을 변수와 최솟값을 넣을 변수 총 3개의 변수를 선언했다. 그리고 for문을 이용하였고, 첫 번째 for문에서는 홀수를 찾았고, 두 번째 for문에서는 찾은 홀수들의 합과 최솟값을 구하기를 했다. 그냥 홀수값을 찾은 후 그 안에서 바로 합과 최솟값을 구하면 됐었는데.. 또한 한 번에 두 개(sum,min)를 출력하지 못했었다. answer을 배열로 하면 끝이였는데..

      <script>
          function solution(arr){
              let sum=[], result=0, min = Number.MAX_SAFE_INTEGER;
              for(let i = 0; i < arr.length; i ++){
                  if(arr[i] % 2 === 1) sum.push(arr[i]);
              }
              for ( let i = 0; i < sum.length; i++){
                  result += sum[i];
                  if(min > sum[i]) min = sum[i];
              }
              answer = min;
              return answer;
          } 
          arr=[12, 77, 38, 41, 53, 92, 85];
          console.log(solution(arr));
      </script>
profile
아자아자 파이띵굥!

0개의 댓글