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
12 77 38 41 53 92 85
▣ 출력예제 1
256
41
📌작성코드:
arr[i] = 배열의 인덱스
arr.length = 배열의 길이
1. 홀수들만 빼기
-for문을 활용해서 하나씩 배열을 돌고, if문으로 비교
2. 홀수들을 더하기 -빈배열 만들어서 넣기
3. 홀수들중에 최소값을 구하기
-for문으로 배열을 돌고 최소값 저장
4. 마지막 구한값들을 결과값에 넣기
function solution(arr) {
let answer = []; //결과값을 저장 할 아이
let sum = 0; //더한 값 초기 세팅
let odd = []; // 홀수만 배열에 저장
let min = Number.MAX_SAFE_INTEGER; //최소 값 저장
for (let i = 0; i < arr.length; i++) {
if (arr[i] % 2 !== 0) { //첫번째 배열을 2로 나눴을때 나머지를 구해줘라 / 나머지가 0이 아니면? = 홀수
sum = sum + arr[i]; //첫번째 배열부터 ~ 다 더해서 sum 안에 저장
odd.push(arr[i]); //if 문을 돌때 i가 홀수면 odd에 다가 push해줘
}
}
for (let i = 0; i < odd.length; i++) {
if (min > odd[i]) { //min 이라는 변수에 초기값으로 최대값을 넣어주고 그거랑 비교!
min = odd[i]; //배열의 첫번째가 min보다 작으면 min에 넣어줘
}
}
answer.push(sum, min); //지금은 answer가 비어있고, 그안에 sum,min의 값을 push 해야함
return answer;
}
arr = [12, 77, 38, 41, 53, 92, 85];
console.log(solution(arr));
📌더 깔끔한 방법
function solution(arr) {
let newArr = [];
let oddArr = [];
let oddSum = 0;
for (i = 0; i < arr.length; i++) {
if (arr[i] % 2 === 1) {
oddSum = oddSum + arr[i];
oddArr.push(arr[i]);
}
}
let min = Math.min(...oddArr);
newArr.push(min, oddSum);
return newArr;
}
arr = [12, 77, 38, 41, 53, 92, 85];
console.log(solution(arr));
'알고리즘' 카테고리의 다른 글
[알고리즘 문제] 8번 (0) | 2022.05.27 |
---|---|
[알고리즘 문제] 7번 (0) | 2022.05.27 |
[알고리즘 문제] 4번 (0) | 2022.05.25 |
[알고리즘 문제] 3번 (0) | 2022.05.25 |
[알고리즘 문제] 2번 (0) | 2022.05.24 |