문제 설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
-10,000 ≤ numbers의 원소 ≤ 10,000
1 ≤ numbers의 길이 ≤ 1,000
입출력 예
| numbers | result |
| [1, 2, 3, 4, 5] | [2, 4, 6, 8, 10] |
| [1, 2, 100, -99, 1, 2, 3] | [2, 4, 200, -198, 2, 4, 6] |
목적
배열 numbers에 있는 각 원소 * 2 = 배열 return
나의 코드
function solution(numbers) {
const answer = [];
for (i = 0; i < numbers.length; i++) {
let x = numbers[i];
answer.push(x * 2);
}
return answer;
}
방식
for문으로 하나씩 돌아가면서 꺼내서 * 2 함
case 1 다른 사람의 코드 (reduce)
function solution(numbers) {
return numbers.reduce((a, b) => [...a, b * 2], []);
}
이 코드의 장점
reduce란 배열을 하나의 값으로 줄이는 함수
기본형태
array.reduce((누적값, 현재값) => 결과, 초기값)
< reduce를 적용시키기 위한 연습문제.. >
문제 1
[1, 2, 3, 4] 배열 합 구하기
나의 답
[1, 2, 3, 4].reduce((acc, cur) => acc+cur, 0)
문제 2
숫자배열 [1, 2, 3, 2, 1] 을 -> { 1: 2, 2: 2, 3: 1 } 형태로 바꾸기
나의 답
[1, 2, 3, 2, 1].reduce((acc, cur) => {
if (acc[cur]) {
acc[cur] = acc[cur] + 1;
} else {
acc[cur] = 1;
}
return acc;
}, {})
case 2 다른 사람의 코드 (map)
const solution = (numbers) => numbers.map((number) => number * 2)
이 코드의 장점
for문 처럼 직접 반복문을 돌리지 않아도 되어서 코드가 훨씬 간결하다
가독성이 좋고 의도가 바로 보인다
< map 을 적용시키기 위한 연습문제... >
문제 1
배열 [1, 2, 3, 4, 5] 가 있는데 각 숫자를 제곱한 배열을 return 해라
나의 답
const answer = practice.map(number => number * number);
문제 2
배열에서 짝수만 골라서 2배 만들기
나의 답
const answer = practice.filter((number) => number % 2 === 0).map((number) => number * 2);
느낀점 : for문을 사용해서 배열을 하나씩 꺼내 처리하는 방법도 있지만, map이나 reduce를 활용하면 훨씬 간결하게 표현할 수 있다는 걸 알게 되었다. 특히 map은 배열의 각 요소를 변형해서 새로운 배열을 만들 때 직관적이고 가독성이 좋아서 사용하기 편했다. 반면 reduce는 아직 익숙하지 않아서 어렵게 느껴지지만, 다양한 방식으로 활용할 수 있는 만큼 반복 연습이 필요하다고 느꼈다.
'코딩테스트' 카테고리의 다른 글
| [프로그래머스] 피자 나눠 먹기 (2) (0) | 2026.04.05 |
|---|---|
| [프로그래머스] 피자 나눠 먹기 (1) (0) | 2026.04.05 |
| [프로그래머스] 짝수는 싫어요 (0) | 2026.04.04 |
| [프로그래머스] 최빈값 구하기 (0) | 2026.04.03 |
| [프로그래머스] 중앙값 구하기 (0) | 2026.04.02 |