문제 설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
-10,000 ≤ numbers의 원소 ≤ 10,0001 ≤ 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]
입출력 예 설명
입출력 예 #1
[1, 2, 3, 4, 5]의 각 원소에 두배를 한 배열 [2, 4, 6, 8, 10]을 return합니다.
입출력 예 #2
[1, 2, 100, -99, 1, 2, 3]의 각 원소에 두배를 한 배열 [2, 4, 200, -198, 2, 4, 6]을 return합니다.
나의 코드 (메모리 & 시간 & 문제 링크와 같은 자세한 정보는 해당 링크를 통해 확인해 주세요! )
function solution(numbers) {
var answer = [];
for (a of numbers) {
a = a * 2;
answer.push(a);
}
return answer;
}
메모리: 33.7 MB, 시간: 0.38 ms
for...of 문을 이용해 배열 numbers를 순회하면서 각 원소를 2배 한 후 answer 배열에 push()하여 결과를 저장하는 방식.
다른 사람의 코드
1. reduce() 사용
function solution(numbers) {
return numbers.reduce((a, b) => [...a, b * 2], []);
}
2. map() 사용
const solution = (numbers) => numbers.map((number) => number * 2)
나의 코드의 경우엔 코드가 길고 반복적이지만,
다른 분들의 코드의 경우 간결하고 가독성 더 좋은 걸 확인할 수 있었다 😭...
자바스크립트에서 제공되는 함수들을 많이 사용해보고 활용해 보아야겠다!
6/27 새롭게 풀어본 방식
function solution(numbers) {
var answer = [];
numbers.forEach(n => answer.push(n*2));
return answer;
}
메모리: 33.6 MB, 시간: 0.18 ms
기존에 for of 반복문을 사용했을 때는 메모리가 33.7MB, 실행 시간은 0.38ms가 나왔는데, 같은 로직을 내장 함수인
forEach()로 바꾸자 메모리는 33.6MB, 실행 시간은 0.18ms로 조금 더 효율적인 결과가 나왔다.
-> 메모리: 0.1MB 감소, 시간: 0.20ms 감소
이번 비교를 통해 자바스크립트에서 제공하는 내장 함수들이 단순히 문법 편의성만이 아니라 실제 성능 면에서도 이점이 있을 수 있다는 걸 느꼈다. 앞으로는 반복 작업을 처리할 때 먼저 map이나 forEach 같은 함수들을 떠올려서 더 효율적이고 깔끔한 코드를 작성하려고 한다.
'ALGORITHM > JavaScript' 카테고리의 다른 글
| [코딩테스트] 최댓값과 최솟값 (0) | 2025.07.01 |
|---|---|
| [코딩테스트] 문자열 섞기 (0) | 2025.06.26 |
| [코딩테스트] 큐 문제 1. 요세푸스 문제 (1) | 2025.06.26 |
| [코딩테스트] 스택 문제 1. 괄호 짝 맞추기 (0) | 2025.06.25 |
| [코딩테스트] 01. 배열 정렬하기 (feat. sort() 메서드와 comcompareFunction) (2) | 2025.06.24 |