목차
#1 배열 만들기 3
문제 설명
정수 배열 arr와 2개의 구간이 담긴 배열 intervals가 주어집니다.
intervals는 항상 [[a1, b1], [a2, b2]]의 꼴로 주어지며 각 구간은 닫힌 구간입니다. 닫힌 구간은 양 끝값과 그 사이의 값을 모두 포함하는 구간을 의미합니다.
이때 배열 arr의 첫 번째 구간에 해당하는 배열과 두 번째 구간에 해당하는 배열을 앞뒤로 붙여 새로운 배열을 만들어 return 하는 solution 함수를 완성해 주세요.
제한사항
- 1 ≤ arr의 길이 ≤ 100,000
- 1 ≤ arr의 원소 < 100
- 1 ≤ a1 ≤ b1 < arr의 길이
- 1 ≤ a2 ≤ b2 < arr의 길이
입출력 예
arr | intervals | result |
{1, 2, 3, 4, 5} | {{1, 3}, {0, 4}} | {2, 3, 4, 1, 2, 3, 4, 5} |
#2 알고리즘 및 코드
import java.util.ArrayList;
import java.util.List;
class Solution {
public int[] solution(int[] arr, int[][] intervals) {
List<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]);
}
}
return list.stream().mapToInt(i -> i).toArray();
}
}
-----------------------------------------------------
정확성 테스트
테스트 1 〉 통과 (2.74ms, 80.5MB)
테스트 2 〉 통과 (4.37ms, 80.4MB)
테스트 3 〉 통과 (24.16ms, 88.1MB)
테스트 4 〉 통과 (10.89ms, 85.8MB)
테스트 5 〉 통과 (7.63ms, 99.5MB)
테스트 6 〉 통과 (10.24ms, 97.2MB)
테스트 7 〉 통과 (8.52ms, 107MB)
테스트 8 〉 통과 (10.34ms, 107MB)
테스트 9 〉 통과 (14.38ms, 110MB)
테스트 10 〉 통과 (5.79ms, 90MB)
테스트 11 〉 통과 (3.58ms, 73.1MB)
- List 클래스와 ArrayList 클래스를 사용한다.
그 이유는 배열의 한계 때문에 만들어진 자료형이기 때문이다.
배열의 한계란 배열을 사용하기 위해서는 크기를 정해야 하는데 프로그래밍 중에 동적으로 생성해야 하는 경우가 많아서이다. - 중첩 for문을 통해 주어지는 intervals의 크기만큼 반복하며 두 번째 for 문에서는 intervals 배열 안의 열림 원소부터 닫힘 연산까지 반복을 진행하여 동적으로 List 클래스를 사용한다.
- 그 후 다시 배열로 변환하여 반환한다.
728x90
'JAVA > 프로그래머스 코딩 기초 트레이닝' 카테고리의 다른 글
[프로그래머스, LV.0] 순서 바꾸기 (0) | 2023.09.06 |
---|---|
[프로그래머스, LV.0] 2의 영역 (0) | 2023.09.06 |
[프로그래머스, LV.0] 리스트 자르기 (0) | 2023.09.04 |
[프로그래머스, LV.0] 가까운 1 찾기 (0) | 2023.09.04 |
[프로그래머스, LV.0] 글자 지우기 (0) | 2023.09.04 |