Lv. 0 - 배열 두배 만들기
문제 설명
정수 배열 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] |
입출력 예 설명
3-1) 입출력 예 설명 #1
[1, 2, 3, 4, 5]의 각 원소에 두배를 한 배열 [2, 4, 6, 8, 10]을 return합니다.
3-2) 입출력 예 설명 #2
[1, 2, 100, -99, 1, 2, 3]의 각 원소에 두배를 한 배열 [2, 4, 200, -198, 2, 4, 6]을 return합니다.
프로그래머스에서 제공한 코드
처음 프로그래머스에서 작성된 코드는 아래와 같다.
function solution(numbers) {
var answer = 0;
return answer;
}
문제 풀이
const solution = numbers => {
// 배열 생성
let answer = [];
// numbers 에 대입된 값들을 곱하기 2해준 다음 answer 에 넣어줌
numbers.forEach(target => {
answer.push(target * 2);
})
// 값 반환
return answer;
}
console.log(solution[1,2,3,4,5]);
console.log(solution[1,2,100,-99,1,2,3]);
함수 선언
- 화살표 함수를 사용하여
numbers
매개변수를 받는다.
풀이
- 변수
answer
생성 후 배열을 생성한다. - 매개변수
numbers
에 대입된 값들을 각각 2씩 곱해주기 위해forEach
문을 사용함 -
numbers
배열의 각 요소에 대해target
변수가 콜백 함수의 매개변수로 전달됨 - 각 요소는 콜백 함수 내부에서
target * 2
로 게산되고,answer
배열에push
메서드를 사용하여 추가함
결과 반환
-
numbers
에 [1,2,3,4,5]를 대입할 경우forEach
문을 통해 으로 [2,4,6,8,10]을 반환 -
numbers
에 [1, 2, 100, -99, 1, 2, 3]를 대입할 경우forEach
문을 통해 으로 [2, 4, 200, -198, 2, 4, 6]을 반환
실행
-
console.log(solution[1,2,3,4,5]);
을 호출하면, 2,4,6,8,10 반환 -
console.log(solution[1,2,100,-99,1,2,3]);
을 호출하면, 2,4,200,-198,2,4,6 반환
다른 사람의 풀이 참고
이번 풀이 과정에선 배열에 추가를 하는 것으로 forEach
문을 사용해서 적용했는데, forEach
문은 항상 undefined
를 반환하며, 배열을 변환하는 작업을 할 때는 map
메서드를 사용하는것이 적절하다는 것을 배웠다.
이번 풀이에서도 reduce
를 사용한 풀이 과정에 댓글이 가장 많았으며, map
을 사용한 풀이과정도 보였다.
배열에 대해 알수록 더 reduce
, map
, filter
과 같이 다양한 메서드에 대해 공부해야 겠다.
// [5명] reduce 메서드를 사용한 풀이 과정
function solution(numbers) {
return numbers.reduce((a, b) => [...a, b * 2], []);
}
// [55명] map 메서드를 사용한 풀이 과정
const solution = (numbers) => numbers.map((number) => number * 2)
링크
- 문제 링크: 문제 링크
- Git: rarrit github
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges