저장을 습관화

프로그래머스 LV.0 배열 두 배 만들기 본문

코딩 테스트/프로그래머스 - 자바스크립트

프로그래머스 LV.0 배열 두 배 만들기

ctrs 2023. 5. 29. 13:27

프로그래머스 LV.0 배열 두 배 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/120809

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 명

배열 두 배 만들기


2. 문제 설명

정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.

3. 제한 사항

-10,000 ≤ numbers의 원소 ≤ 10,000
1 ≤ numbers의 길이 ≤ 1,000


4. 예시

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]


5. 기본 제공 코드

function solution(numbers) {
    var answer = [];
    return answer;
}


6. 제출한 내 답

function solution(numbers) {
    var answer = [];

    for (let i = 0; i<numbers.length; i++) {
        answer[i] = Number(numbers[i])*2;
    }
    
    return answer;
}

 

6-2. VSC에 작성한 내용

function solution(numbers) {
    var answer = [];

    for (let i = 0; i<numbers.length; i++) {
        answer[i] = Number(numbers[i])*2;
    }
    
    return answer;
}

// 어떻게 할 것인가?
// 반복문을 이용하여 배열의 각 요소들을 불러와 
// 2를 곱하고 다시 그 자리에 넣는다.

// 테스트
console.log(solution([1, 2, 3, 4, 5]));

console.log(solution([1, 2, 100, -99, 1, 2, 3]));

console.log(solution([-49, -23,  -9, -30, -6,  -6, -11,  48, -21,  15]));

console.log(solution([33,  50, -41, -16, -43, 31, -40,   6, -28,  -3]));


7. 특이사항

대충 이렇게 하면 되지 않을까....? 했는데 다행히 잘됐다

다만 반복문 부분에서 조건문을 작성할때 조금 버벅였다

i<=numbers.length도 해보고 i=numbers.length도 해보고..

 

요소(배열의 길이)가 5개인 배열의 위치는 0부터 4까지이다.

변수 i가 배열의 길이와 같아진다면 반복문은 배열의 요소를 6개 가져오려 할 것이다.

이렇게 된다면 배열의 마지막 항목엔 undefined가 저장된다.


8. 다른 사람이 작성한 답

8-1. reduce

function solution(numbers) {
    return numbers.reduce((a, b) => [...a, b * 2], []);
}

 

 

8-2. map

function solution(numbers) {
    return numbers.map(i=>i*2);
}

 

8-3. map + 화살표 함수

const solution = (numbers) => numbers.map((number) => number * 2)

 

8-4. forEach

function solution(numbers) {
    var answer = [];
    numbers.forEach(number => answer.push(2*number))
    return answer;
}

forEach() 메소느드는 배열의 요소를 반복하며 함수를 호출한다.