코린이의 소소한 공부노트

[프로그래머스/Lv.0] 배열 만들기 3 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.0] 배열 만들기 3

무지맘 2023. 5. 1. 13:23

1. Input, Output, Example

-intervals을 이용해 arr의 첫 번째 구간에 해당하는 배열과 두 번째 구간에 해당하는 배열을 앞뒤로 붙여 새로운 배열을 만들어 반환

 

2. Constraint

1) 1 arr의 길이 100,000

2) 1 arr의 원소 < 100

3) intervals는 항상 [[a1, b1], [a2, b2]]의 꼴로 주어지며 각 구간은 닫힌 구간이다.

4) 1 a1 b1 < arr의 길이

5) 1 a2 b2 < arr의 길이

 

3. Code

1) 첫 코드(2023/05/01)

import java.util.*;
class Solution {
    public int[] solution(int[] arr, int[][] intervals) {
        ArrayList<Integer> list = new ArrayList<>();
        for(int i=0 ; i<intervals.length ; i++)
            for(int j=intervals[i][0] ; j<=intervals[i][1] ; j++)
                list.add(arr[j]);
        int[] answer = new int[list.size()];
        for(int i=0 ; i<answer.length ; i++)
            answer[i] = list.get(i);
        return answer;
    }
}

2) 비교 코드(2023/05/01)

class Solution {
    public int[] solution(int[] arr, int[][] intervals) {
        int n1 = intervals[0][1] - intervals[0][0] + 1;
        int n2 = intervals[1][1] - intervals[1][0] + 1;
        int[] answer = new int[n1+n2];
        System.arraycopy(arr,intervals[0][0],answer,0,n1);
        System.arraycopy(arr,intervals[1][0],answer,n1,n2);
        return answer;
    }
}

- 2번이 훨씬 빠르지만, 추가 점수는 없었다.