프로그래머스 문자열 묶기

KIMYEONGJUN·2026년 7월 23일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

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

내가 이 문제를 보고 생각해본 부분

HashMap<Integer, Integer> lengthCountMap = new HashMap<>();
길이를 key로, 해당 길이 문자열의 개수를 value로 저장하는 맵을 생성하였다.
for (String s : strArr) { ... } 반복문에서 배열의 각 문자열을 순회한다.
int length = s.length();를 통해 현재 문자열의 길이를 구했다.
lengthCountMap.put(length, lengthCountMap.getOrDefault(length, 0) + 1);
지도에서 해당 길이의 문자열 개수를 가져오거나 (없으면 0), 1을 더해 저장한다.
이렇게 하면 길이별로 문자열 개수를 집계한다.
int maxCount = 0;를 초기화하여 최대 그룹 크기를 저장할 변수를 선언했다.
for (int count : lengthCountMap.values()) { ... } 반복문에서 맵의 모든 그룹 개수를 순회한다.
if (count > maxCount) { maxCount = count; }
현재 그룹의 크기가 기존 최대값보다 크면 갱신한다.
결국 가장 큰 그룹 크기가 maxCount에 저장된다.
return maxCount;로 최종적으로 가장 많은 문자열이 모인 그룹의 크기를 반환한다.
main 메서드에서는 예제로 문자열 배열 {"a", "bc", "d", "efg", "hi"}를 호출하여
결과 출력으로 2가 찍히게 한다.

코드로 구현

import java.util.HashMap;

class Solution {
    public int solution(String[] strArr) {
        HashMap<Integer, Integer> lengthCountMap = new HashMap<>();

        for (String s : strArr) {
            int length = s.length();
            lengthCountMap.put(length, lengthCountMap.getOrDefault(length, 0) + 1);
        }

        int maxCount = 0;
        for (int count : lengthCountMap.values()) {
            if (count > maxCount) {
                maxCount = count;
            }
        }

        return maxCount;
    }
}

프로그래머스 코드

package programmers;

import java.util.HashMap;

// 프로그래머스 문자열 묶기
public class Main90 {
    public static int solution(String[] strArr) {
        HashMap<Integer, Integer> lengthCountMap = new HashMap<>();

        for (String s : strArr) {
            int length = s.length();
            lengthCountMap.put(length, lengthCountMap.getOrDefault(length, 0) + 1);
        }

        int maxCount = 0;
        for (int count : lengthCountMap.values()) {
            if (count > maxCount) {
                maxCount = count;
            }
        }

        return maxCount;
    }

    public static void main(String[] args) {
        String[] test = {"a", "bc", "d", "efg", "hi"};
        int result = solution(test);
        System.out.println(result);
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글