관리 메뉴

여름 언덕에서 배운 것

[0단계] 배열 만들기 3 본문

가랑비에 옷 젖는 줄 모른다 💻/🌰코테문풀_꾸준히

[0단계] 배열 만들기 3

잔뜩 2025. 1. 23. 14:34

** 좀 더 좋은 방법이 없을까 하다가

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

 

** 다른 사람 풀이

 

두번째 풀이는 고정된 배열을 사용해 불필요한 오버헤드를 줄일 수 있다고 한다.

import java.util.ArrayList;

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 < list.size(); i++) {
            answer[i] = list.get(i);
        }

        return answer;
    }
}


import java.util.*;
class Solution {
    public int[] solution(int[] arr, int[][] intervals) {
        int totalLength = 0;
        for (int[] interval : intervals) {
            totalLength += (interval[1] - interval[0] + 1);
        }

        int[] answer = new int[totalLength];
        int idx = 0;

        for (int[] interval : intervals) {
            for (int i = interval[0]; i <= interval[1]; i++) {
                answer[idx++] = arr[i];
            }
        }

        return answer;
    }
}
728x90

'가랑비에 옷 젖는 줄 모른다 💻 > 🌰코테문풀_꾸준히' 카테고리의 다른 글

[0단계]배열 조각하기  (0) 2025.01.23
[0단계] 2의 영역  (1) 2025.01.23
[0단계]글자 지우기  (0) 2025.01.22
[0단계] 문자 개수 세기  (1) 2025.01.22
[0단계] qr code  (0) 2025.01.21