프로그래머스 배열 만들기 3

KIMYEONGJUN·2026년 6월 13일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

정수 배열 arr와 2개의 구간이 담긴 배열 intervals가 주어집니다.
intervals는 항상 [[a1, b1], [a2, b2]]의 꼴로 주어지며 각 구간은 닫힌 구간입니다.
닫힌 구간은 양 끝값과 그 사이의 값을 모두 포함하는 구간을 의미합니다.
이때 배열 arr의 첫 번째 구간에 해당하는 배열과 두 번째 구간에 해당하는 배열을 앞뒤로 붙여 새로운 배열을 만들어 return 하는 solution 함수를 완성해 주세요.

내가 이 문제를 보고 생각해본 부분

solution 메서드에서 첫 번째 구간과 두 번째 구간의 시작과 끝 인덱스를 꺼내온다.
각 구간의 길이를 닫힌 구간 길이 계산법인 (끝 인덱스 - 시작 인덱스 + 1)로 구한다.
두 구간 길이 합에 해당하는 크기의 새 배열 answer를 초기화한다.
첫 번째 구간 범위에 해당하는 부분을 arr 배열에서 복사해 answer 배열의 앞쪽에 채운다.
두 번째 구간 범위에 해당하는 부분을 arr 배열에서 복사해 answer 배열의 뒤쪽에 채운다.
최종 완성된 answer 배열을 반환한다.
main 메서드는 위 solution 메서드를 테스트하기 위해 입력 배열과 구간을 선언하고 solution를 호출해 결과를 콘솔에 출력한다. 예상 출력값은 [2, 3, 4, 1, 2, 3, 4, 5]이다.

코드로 구현

class Solution {
    public int[] solution(int[] arr, int[][] intervals) {
        int a1 = intervals[0][0];
        int b1 = intervals[0][1];
        int a2 = intervals[1][0];
        int b2 = intervals[1][1];

        int len1 = b1 - a1 + 1;
        int len2 = b2 - a2 + 1;
        
        int[] answer = new int[len1 + len2];

        for (int i = 0; i < len1; i++) {
            answer[i] = arr[a1 + i];
        }

        for (int i = 0; i < len2; i++) {
            answer[len1 + i] = arr[a2 + i];
        }
        
        return answer;
    }
}

프로그래머스 코드

package programmers;

import java.util.Arrays;

// 프로그래머스 배열 만들기 3
public class Main50 {
    // 배열 만들기 3 문제 풀이 메서드
    public int[] solution(int[] arr, int[][] intervals) {
        int a1 = intervals[0][0];
        int b1 = intervals[0][1];
        int a2 = intervals[1][0];
        int b2 = intervals[1][1];

        int len1 = b1 - a1 + 1;
        int len2 = b2 - a2 + 1;

        int[] answer = new int[len1 + len2];

        for (int i = 0; i < len1; i++) {
            answer[i] = arr[a1 + i];
        }

        for (int i = 0; i < len2; i++) {
            answer[len1 + i] = arr[a2 + i];
        }

        return answer;
    }

    public static void main(String[] args) {
        Main50 main50 = new Main50();

        int[] arr = {1, 2, 3, 4, 5};
        int[][] intervals = {{1, 3}, {0, 4}};

        int[] result = main50.solution(arr, intervals);

        System.out.println(Arrays.toString(result));
        // 예상 출력: [2, 3, 4, 1, 2, 3, 4, 5]
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글