[CodingTest] 배열 두 배 만들기

hye·2023년 3월 7일
0

AlgorithmTest

목록 보기
35/95

📖 Exam

문제 설명

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

제한 조건

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

입출력 예

numbersresult
[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합니다.


✍ Answer

class Solution {
    public int[] solution(int[] numbers) {
        for(int i=0; i<numbers.length; i++){
            numbers[i] = numbers[i]*2;
        }
        return numbers;
    }
}

💡 Realization

  • 향상된 for문으로는 실행을 못하나? 싶었는데 향상된 for문에서의 num은 for 안에서만 존재하는 값으로 수정할 수 없었다.

향상된 for문

향상된 for문은 배열의 요소를 복사하여 가져오는 것이므로, 값을 변경하여도 실제 배열의 값은 변경되지 않는다.

아래와 같은 방법으로 향상된 for문 사용하여 값을 수정할 수 있다.

  • 기존 numbers 배열의 인덱스에 2배된 값을 넣어주는 방법
class Solution {
    public int[] solution(int[] numbers) {
        int i = 0;
        for(int num : numbers){
            numbers[i++] = num * 2;
        }
        return numbers;
    }
}
  • list 선언후 add 하여 배열을 새로 만드는 방법
import java.util.*;

class Solution {
    public ArrayList solution(int[] numbers) {
        ArrayList<Integer> answer = new ArrayList<>();

        for(int num : numbers){
            answer.add(num*2);
        }

        return answer;
    }
}

Arrays.stream

import java.util.Arrays;

class Solution {
    public int[] solution(int[] numbers) {
        return Arrays.stream(numbers).map(i -> i * 2).toArray();
    }
}
profile
Junior Backend Developer

0개의 댓글