※ 문제
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
※ 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(arr) {
let answer = [];
let sum = 0;
let min = Number.MAX_SAFE_INTEGER;
for (let x of arr) {
if (x % 2 !== 0) {
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>
※ 설명
홀수의 합과 최솟값을 return 해야하므로 answer의 값을 배열로 할당하고 홀수들의 합을 담을 sum에 0으로 초기화하고 홀수의 최솟값을 담을 min에 MAX값으로 초기화한다.
배열(배열의 크기만큼)에 있는 모든 item들을 가져올 때 let x of arr 형태로 반복문을 돌린다.
홀수는 값을 2로 나눈 나머지 값이 0이 아닌 경우를 의미한다. 이에 속한다면 sum에 x값을 차례로 더하고 이어서 홀수일 경우 MAX값으로 초기화해놓은 min과 비교하여 min보다 작을 경우 min에 x값을 할당하도록 한다.
이후 두 sum과 min의 값을 answer배열에 할당하려면 push내장함수를 사용한다. 따라서 차례로 answer.push(sum), answer.push(min)할당해준 후 answer을 return해준다.
※ 핵심
- return값이 여러개일 경우 ⇒ answer을 배열로 할당해 놓고 return 값들을 push해준다.
- 배열의 값들을 배열의 크기만큼 돌릴려면 let x of arr로 for문을 돌린다.
해당 내용은 김태원님의 자바스크립트 알고리즘 문제풀이 강의를 듣고 작성한 글입니다.
'🤯 코딩테스트 > Javscript' 카테고리의 다른 글
[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 01 - 일곱 난쟁이 (0) | 2022.01.08 |
---|---|
[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 01 - 10부제 (0) | 2022.01.08 |
[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 01 - 배열의 최솟값 구하기 (0) | 2022.01.08 |
[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 01 - 1부터 N까지의 합 출력하기 (0) | 2022.01.08 |
[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 01 - 연필 개수 (0) | 2022.01.08 |