문제
홀수 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
function solution(arr){
let answer1 = 0;
let answer2 = Number.MAX_SAFE_INTEGER;
let oddNums = arr.filter(x => x % 2 !== 0);
for(let x of oddNums){
answer1 += x;
if( x < answer2){
answer2 = x;
}
}
return [answer1, answer2];
}
arr=[12, 77, 38, 41, 53, 92, 85];
console.log(solution(arr));
최소값을 Math.min(...arr)이나 Math.min(12,77,38 ...)로도 구할 수도 있다.
24.4.10.
function solution(arr) {
let answer;
let answer2;
let odd = arr.filter((x) => x % 2 == 1);
answer2 = odd.reduce((a, c) => a + c);
answer = Math.min(...odd);
return [answer2, answer];
}
arr = [12, 77, 38, 41, 53, 92, 85];
console.log(solution(arr));
객체 배열에서의 값 합산
객체로 이루어진 배열에 들어 있는 값을 합산하기 위해서는 반드시 초기값을 주어 각 항목이 여러분의 함수를 거치도록 해야 합니다.
JSCopy to Clipboard
var initialValue = 0;
var sum = [{ x: 1 }, { x: 2 }, { x: 3 }].reduce(function (
accumulator,
currentValue,
) {
return accumulator + currentValue.x;
}, initialValue);
console.log(sum); // logs 6
화살표 함수(arrow function)로도 작성할 수 있습니다:
JSCopy to Clipboard
var initialValue = 0;
var sum = [{ x: 1 }, { x: 2 }, { x: 3 }].reduce(
(accumulator, currentValue) => accumulator + currentValue.x,
initialValue,
);
console.log(sum); // logs 6
'🗃️javascript > 코테 프레임 문제' 카테고리의 다른 글
| 1-8 일곱난쟁이(틀림)(24년 업데이트: 맞춤) (0) | 2023.09.18 |
|---|---|
| 1-7 10부제(24년 업데이트) (0) | 2023.09.18 |
| 4-1 자리수의 합[브루트포스] ,reduce 0 : 타입 초기화 (0) | 2023.09.16 |
| 1-5 최솟값 구하기 [Number.MAX_SAFE_INTEGER(내장 상수)] (0) | 2023.09.16 |
| 1-4 1부터 N까지의 합(24년 업데이트) (0) | 2023.09.15 |