[C++] 프로그래머스 문자열 묶기

문제설명

문자열 배열 strArr이 주어집니다.
strArr의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때
가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요.


제한사항

• 1 ≤ strArr의 길이 ≤ 100,000
  ◦ 1 ≤ strArr의 원소의 길이 ≤ 30
  ◦ strArr의 원소들은 알파벳 소문자로 이루어진 문자열입니다.


입출력 예

strArr result
[“a”,”bc”,”d”,”efg”,”hi”] 2


풀이

strArr 배열에서 문자열의 길이가 같은 문자열들끼리 그룹으로 묶고, 가장 개수가 많은 그룹의 크기를 returng하는 구현문제 입니다.

strArr의 최대 원소의 길이가 30이므로 개수를 세는 cnt 배열을 선언하여 개수를 파악하는 로직을 구현했습니다.

#include <string>
#include <vector>
#include <algorithm>
#include <memory.h>

using namespace std;

int solution(vector<string> strArr) {
    int answer = 0;
    int cnt[31];
    
    memset(cnt, 0, sizeof(cnt));
    
    for(int i = 0; i < strArr.size(); i++)
    {
        cnt[strArr[i].size()]++;
    }
    
    answer = *max_element(cnt, cnt+31);
    
    return answer;
}


결과

코드 실행결과

Categories:

Updated:

Leave a comment