Developer. Designer

프로그래머스 기초트레이닝 Day20-3

문자열 묶기😀

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

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

입출력

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


function solution(strArr) {
  // 문자열을 길이별로 그룹화하기 위한 객체 생성
  var groupedByLength = {};

  // 주어진 배열을 순회하면서 길이별로 그룹화
  strArr.forEach((str) => {
    var length = str.length;
    if (groupedByLength[length]) {
      groupedByLength[length].push(str);
    } else {
      groupedByLength[length] = [str];
    }
  });

  // 가장 큰 그룹의 크기 찾기
  var maxGroupSize = 0;
  for (var length in groupedByLength) {
    var groupSize = groupedByLength[length].length;
    if (groupSize > maxGroupSize) {
      maxGroupSize = groupSize;
    }
  }

  return maxGroupSize;
}

먼저, 문자열을 길이별로 그룹화하기 위한 빈 객체 groupedByLength를 생성합니다.

주어진 배열을 순회하면서 각 문자열의 길이를 확인하고, 해당 길이의 그룹이 이미 존재하면 그룹에 추가하고, 존재하지 않으면 새로운 그룹을 만들어 추가합니다.

모든 문자열을 그룹화한 후, 각 그룹의 크기를 비교하여 가장 큰 그룹의 크기를 찾습니다.

찾은 가장 큰 그룹의 크기를 반환합니다.

예를 들어, [“abc”, “def”, “123”, “xyz”, “456”, “uvw”, “ab”] 배열이 주어졌을 때, 문자열의 길이가 3인 그룹은 [“abc”, “def”, “uvw”]으로 세 개의 원소를 가지고 있습니다. 따라서 함수는 3을 반환합니다.