<홀수>
: 7개의 자연수가 주어질 때, 이들 중 홀수인 자연수들을 모두 골라 그 합을 구하고,
고른 홀수들 중 최소값을 찾는 프로그램을 작성하세요.
첫 번째 줄에 홀수들의 합을 출력하고, 둘째 줄에 홀수들 중 최솟값을 출력하도록 하시오.
- 두 개(합, 최솟값)를 출력해야 하므로, answer을 배열로 선언한다. 그리고 합한 값을 담을 변수(sum)과 최솟값을 담을 변수(min)을 선언한다.
- for of 문으로 배열을 돌리고, if문으로 홀수만 추출한 후, 거기에서 홀수의 합과 홀수들 중의 최솟값을 구한다.
! 플러스 개념
-> 반복문!
- for...of : 배열에 관한 반복문(배열내장함수로도 구현 가능)
- for...in : 객체에 관한 반복문
<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>
나는 홀수만을 담는 배열 변수, 그리고 앞의 배열의 모든 인자들을 합한 값을 넣을 변수와 최솟값을 넣을 변수 총 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>