[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$ = 결과 배열의 길이)
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]
구간이 2개이므로 튜플들로 깔끔하게 받았다.
This post is licensed under CC BY 4.0 by the author.