Post

[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.