[Programmers] #181855 - 문자열 묶기 [Java][C++][Python]
[Programmers] #181855 - 문자열 묶기 [Java][C++][Python]
1. 아이디어
문자열 배열 strArr에서 원소들을 길이가 같은 원소끼리 그룹으로 묶었을 때, 가장 개수가 많은 그룹의 크기를 구해야 한다. 원소의 길이에 대한 카운팅 배열이나 카운팅 맵으로 카운팅 후 가장 큰 빈도수를 구해서 반환하면 된다.
2. 복잡도
| 접근 | 시간 | 공간 |
|---|---|---|
| 풀이 | $O(N)$ | $O(1)$ |
($N$ = strArr의 길이)
3. 코드
풀이 [Java][C++][Python]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public int solution(String[] strArr) {
int[] cnt = new int[1 + 30];
for (String s : strArr) {
cnt[s.length()]++;
}
int max = 0;
for (int x : cnt) {
max = Math.max(max, x);
}
return max;
}
}
1
2
3
4
5
6
7
8
#include <bits/stdc++.h>
using namespace std;
int solution(vector<string> strArr) {
vector<int> cnt(1 + 30);
for (string& s : strArr) cnt[s.size()]++;
return *max_element(cnt.begin(), cnt.end());
}
1
2
3
4
5
6
from collections import Counter
def solution(strArr):
cnt = Counter(len(s) for s in strArr)
return max(cnt.values())
This post is licensed under CC BY 4.0 by the author.