dev-code-review-org / programmers-codeing-test-challenge

🧑🏻‍💻 programmers 코테 문제 챌린지: 개발자들의 코드 리뷰 레포지토리
1 stars 2 forks source link

[#level 0][2024.03.16] 배열 두 배 만들기 #3

Open Caramel1004 opened 8 months ago

Caramel1004 commented 8 months ago

[level 0] 배열 두 배 만들기 - 120809

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/120809

Caramel1004 commented 8 months ago

제출자: 변우영

[level 0] 배열 두배 만들기 - 120809

문제 링크

성능 요약

메모리: 79.3 MB, 시간: 2.28 ms

구분

코딩테스트 연습 > 코딩테스트 입문

채점결과

정확성: 100.0
합계: 100.0 / 100.0

제출 일자

2024년 02월 22일 13:36:23

문제 설명

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


제한사항

입출력 예
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

입출력 예 #2

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges 사용언어: java

class Solution { public int[] solution(int[] numbers) { return IntStream.of(numbers) .map(number -> number * 2) .toArray(); } }


* 방법 2. for문 활용 *
1. 새로운 배열 선언
2. 새로운 배열에 numbers 요소 하나씩 2배해서 저장
3. 새로운 배열 리턴

class Solution { public int[] solution(int[] numbers) {

    int[] newArr = new int[numbers.length];
    int index = 0;

    for(int num : numbers) {
        newArr[index] = numbers[index] * 2;
        index++;
    }

    return newArr;
}

}

inha2 commented 7 months ago

제출자: 조인하

[level 0] 배열 두배 만들기 - 120809

문제 링크

성능 요약

메모리: 33.6 MB, 시간: 0.09 ms

구분

코딩테스트 연습 > 코딩테스트 입문

채점결과

정확성: 100.0
합계: 100.0 / 100.0

제출 일자

2024년 03월 18일 19:53:17

문제 설명

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


제한사항

입출력 예
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

입출력 예 #2

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

let answer = [];
function solution(numbers) {
for(let i=0; i<numbers.length; i++){
answer.push(numbers[i]*2)
}
return answer;
}
Caramel1004 commented 7 months ago

조인하님 코멘트의 변우영님 댓글

for문을 활용하여 아주 잘 해결하셨습니다. 하나만 언급하자면 최대한 변수는 함수 안에 지역변수로 선언하는게 제일 좋습니다. answer를 const 로 선언 하는 것이 더 좋을듯 합니다. 왜냐하면 let을 사용하게 되면 다른 값으로 재할당이 가능하게 되어 자칫 answer의 변수 값의 타입이 바뀔 수 가 있습니다. 그래서 answer는 리턴되는 중요한 변수이니 const로 선언하여 배열이외의 값은 재할당 못하도록 하시고 const로 선언하셔도 push가 가능합니다. answer는 배열 타입의 포인터를 지정한 것이고, answer.push(); 를 통해 answer의 메모리에 접근합니다. push(), pop() 등의 메소드는 포인터를 바꾸는 행위가 아니기 때문에 push(), pop() 이 가능합니다.

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

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

    return answer;
}

이렇게 코드 리팩토링 하면 좋을거 같습니다. 문제 해결하시느라 고생 많으셨습니다.👍🏻