[algorithm] 홀수

Ho-eng·2023년 4월 6일
0

❓ 홀수


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부터 N까지의 합을 출력한다.

  • 입력예제 1

    12 77 38 41 53 92 85

  • 출력예제 1

    256
    41

❗ 문제 풀이

내 풀이

<html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function solution(arr) {
        let sum = 0
        let 홀수 = []
        let answer = []
        for (let i = 0; i < arr.length; i++) {
          if (arr[i] % 2 !== 0) {
            홀수.push(arr[i])
            홀수.sort((a, b) => a - b)
            sum = sum + arr[i]
          }
        }

        answer.push(sum)
        answer.push(홀수[0])

        return answer
      }

      let arr = [12, 77, 38, 41, 53, 92, 85]
      console.log(solution(arr))
    </script>
  </body>
</html>
  1. sum = 0 , 홀수 = [ ] , answer = [ ] 을 선언해준다.
  2. 반복문을 돌면서 조건이 참인 경우를 찾는다.
    2.1 홀수인 조건은 2로 나누었을 때 나머지가 1인 경우 이므로 조건이 참인 경우(=홀수), 선언해준 홀수라는 빈 배열에 인덱스들을 넣어주고, 오름차순으로 정렬한다. 또한 기본값이 0인 sum에 인덱스들을 더해준다.
    2.2 위와 같은 과정들을 돌면 홀수에는 [홀수들이 들어간 배열], sum에는 홀수들의 합이 저장된다.
  3. answer의 0번째 인덱스로는 홀수들의 총 합(sum), 1번째 인덱스로는 홀수의 가장 최소값(오름차순한 홀수 배열의 최소값)을 할당한다.


정답소스

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            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;
            }
            
            arr=[12, 77, 38, 41, 53, 92, 85];
            console.log(solution(arr));
        </script>
    </body>
</html>
  1. answer = [ ] , sum = 0 , min = 1000 을 선언해준다.
  2. for of 를 통해 순환을 돌면서 조건이 참인 경우를 찾는다.
    2.1 홀수면은 sum에 x를 더해준다.
    2.2 홀수면서도 x < min(초기값 1000)을 만족하는 경우엔 min의 값들을 x값으로 할당한다. (=최소값 갱신)
  3. answer의 0번째 인덱스로는 홀수들의 총 합(sum), 1번째 인덱스로는 홀수의 가장 최소값(오름차순한 홀수 배열의 최소값)을 할당한다.
profile
매일 '어제의 나와 오늘의 나는 무엇이 다를까?'를 고민하는 김호엥입니다.

0개의 댓글