[Programmers] #181895 - 배열 만들기 3 [Java][C++][Python]
정수 배열과 두 개의 구간을 받아 각 구간에 해당하는 부분 배열을 이어 붙여 반환하는 워밍업 문제.
[Programmers] #181895 - 배열 만들기 3 [Java][C++][Python]
1. 아이디어
intervals의 각 구간 $[s, e]$에 대해 arr의 $s$번째부터 $e$번째까지(양끝 포함) 원소를 순서대로 모아 이어 붙이면 된다.
2. 복잡도
| 접근 | 시간 | 공간 |
|---|---|---|
| 풀이 | $O(N)$ | $O(N)$ |
($N$ = arr의 길이)
3. 코드
풀이 [Java][C++][Python]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[][] intervals) {
List<Integer> list = new ArrayList<>();
for (int[] interval : intervals) {
for (int i = interval[0]; i <= interval[1]; i++) {
list.add(arr[i]);
}
}
return list.stream().mapToInt(Integer::intValue).toArray();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <bits/stdc++.h>
using namespace std;
vector<int> solution(vector<int> arr, vector<vector<int>> intervals) {
vector<int> v;
for (auto& interval : intervals) {
for (int i = interval[0]; i <= interval[1]; i++) {
v.push_back(arr[i]);
}
}
return v;
}
1
2
3
def solution(arr, intervals):
(s1, e1), (s2, e2) = intervals
return arr[s1 : e1 + 1] + arr[s2 : e2 + 1]
This post is licensed under CC BY 4.0 by the author.