카운트 다운
정수 start_num와 end_nu가 주어질 때, start_num에서 end_num까지 1씩 감소하는 수들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
- 0 ≤ end_num ≤ start_num ≤ 50
function solution(start_num, end_num) {
const answer = [];
let i = start_num;
while(i >= end_num) {
answer.push(i);
i--;
}
return answer;
}
// 다른 사람의 풀이
const solution = (start, end) => Array(start-end+1).fill(start).map((v,i)=>v-i);
끝나는 조건이 분명하므로, while문을 사용하여 해결하였다.
<다른 사람의 풀이에 대한 이해>
1) Array()를 통해 필요한 갯수만큼 길이를 갖는 배열을 생성한다.
2) 1씩 줄어드는 배열이므로, fill(start)를 사용하여 시작값을 설정한다.
3) map((v, i) => v-i) : 배열의 요소를 v라고 하고, 그 요소들에 각각 인덱스 i만큼의 배열로 반환한다.
홀수 vs 짝수
정수 리스트 num_list가 주어집니다. 가장 첫 번째 원소를 1번 원소라고 할때, 홀수 번째 원소들의 합과 짝수 번째 원수들의 합 중 큰 값을 return 하도록 solution 함수를 완성해주세요. 두 값이 같을 경우 그 값을 return합니다.
- 5 ≤ num_list의 길이 ≤ 50
- -9 ≤ num_list의 원소 ≤ 9
function solution(num_list) {
let oddSum = 0;
let evenSum = 0;
for (let i = 0; i < num_list.length; i++) {
i % 2 !== 0 ? oddSum += num_list[i] : evenSum += num_list[i];
}
return oddSum > evenSum ? oddSum : evenSum;
}
// 다른 사람의 풀이
function solution(num_list) {
let odd = 0;
let even = 0;
num_list.forEach((x,i) => i%2 == 0 ? even += x : odd += x);
return Math.max(odd, even);
}
홀수 번째와 짝수 번째 요소들의 각각에 대한 합을 구하는 문제이므로, 배열의 요소를 순환하는 인덱스의 값을 더하도록 한다.
<다른 사람의 풀이에 대한 이해>
map()으로 해결한 풀이도 있었지만, forEach()로 해결한 것에 대해 파악하고자 가져왔다.
1) forEach() 메소드는 원본 배열을 수정하지 않으므로, 새로운 배열을 생성할 필요가 없다.
2) forEach((x, i) => { ... }배열 num_list의 요소들을 변수명 x로 하고, 인덱스를 i라고 한다.
3) 요소의 위치에 따라 각각 홀수와 짝수에 더해준다.
'코딩테스트 > 프로그래머스 0단계 - 기초 트레이닝' 카테고리의 다른 글
프로그래머스 0단계 - 문자열 정수의 합 / 5명씩 (0) | 2024.04.05 |
---|---|
프로그래머스 0단계 - 문자열 곱하기 / 카운트 업 (0) | 2024.04.04 |
프로그래머스 0단계 - 배열 만들기 1 / n개 간격의 원소들 (0) | 2024.04.02 |
프로그래머스 0단계 - 조건에 맞게 수열 변환하기 3 / A 강조하기 (0) | 2024.04.01 |
프로그래머스 0단계 - 문자열 섞기, 문자열로 변환 (0) | 2024.03.30 |
댓글