[Programmers] #181912 - 배열 만들기 5 [Java][C++][Python]
문자열에서 부분 문자열을 잘라 정수로 변환한 뒤 조건에 맞는 값만 모으는 워밍업 문제.
[Programmers] #181912 - 배열 만들기 5 [Java][C++][Python]
1. 아이디어
intStrs의 각 원소에서 인덱스 s부터 길이 l만큼의 부분 문자열을 잘라 정수로 변환하고, 그 값이 k보다 큰 경우만 결과에 담으면 되는 문제다. k가 항상 자릿수 l에 맞는 범위($10^{l-1} \le k < 10^l$)로 주어지므로 변환한 값과 곧바로 크기 비교를 하면 된다.
2. 복잡도
| 접근 | 시간 | 공간 |
|---|---|---|
| 풀이 | $O(N \times L)$ | $O(N)$ |
($N$ = intStrs의 길이, $L$ = l)
3. 코드
풀이 [Java][C++][Python]
1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.*;
class Solution {
public int[] solution(String[] intStrs, int k, int s, int l) {
List<Integer> list = new ArrayList<>();
for (String str : intStrs) {
int x = Integer.parseInt(str.substring(s, s + l));
if (x > k) list.add(x);
}
return list.stream().mapToInt(Integer::intValue).toArray();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
#include <bits/stdc++.h>
using namespace std;
vector<int> solution(vector<string> intStrs, int k, int s, int l) {
vector<int> v;
for (auto& str : intStrs) {
int x = stoi(str.substr(s, l));
if (x > k) v.push_back(x);
}
return v;
}
1
2
def solution(intStrs, k, s, l):
return [int(a[s : s + l]) for a in intStrs if int(a[s : s + l]) > k]
This post is licensed under CC BY 4.0 by the author.