Coding Test/Java Coding Test

[프로그래머스 / 자바] - 문자열 묶기

nam_ji 2024. 11. 13. 18:33

문자열 묶기 - LV.0

문제


테스트 (인텔리제이)

import java.util.HashMap;
import java.util.Map;

public class 문자열_묶기 {
    public static void main(String[] args) {
        /*
        문제 설명
        문자열 배열 strArr이 매개변수로 주어집니다.
        strArr의 원소들을 길이가 같은 문자열들끼리
        그룹으로 묶었을 때 가장 개수가 많은
        그룹의 크기를 출력하는 문제입니다.

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

        입출력 예
        strArr	                    result
        ["a","bc","d","efg","hi"]	2

        입출력 예 설명
        #1
        - 각 문자열들을 길이에 맞게 그룹으로 묶으면 다음과 같습니다.
            문자열 길이	문자열 목록	개수
            1	        ["a","d"]	2
            2	        ["bc","hi"]	2
            3	        ["efg"]	    1
            - 개수의 최댓값은 2이므로 2를 return 합니다.
         */
        String[] strArr = {"a","bc","d","efg","hi"};
        int answer = 0;

        solution1(strArr, answer);
        solution2(strArr, answer);
    }

    public static void solution1(String[] strArr, int answer) {
        HashMap<Integer, Integer> map = new HashMap<>();

        for (String str : strArr) {
            map.put(str.length(), map.getOrDefault(str.length(), 0) + 1);
        }
        for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            if (answer < entry.getValue()) {
                answer = entry.getValue();
            }
        }
        
        System.out.println(answer);
    }

    public static void solution2(String[] strArr, int answer) {
        int[] lengArr = new int[31];

        for (int i = 0; i < strArr.length; i++) {
            lengArr[strArr[i].length()]++;
        }

        for (int i = 0; i <= 30; i++) {
            answer = Math.max(answer, lengArr[i]);
        }

        System.out.println(answer);
    }
}

프로그래머스 코드

// import java.util.*;

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

//         for (String str : strArr) {
//             map.put(str.length(), map.getOrDefault(str.length(), 0) + 1);
//         }
//         for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
//             if (answer < entry.getValue()) {
//                 answer = entry.getValue();
//             }
//         }
        
//         return answer;
//     }
// }

import java.util.*;

class Solution {
    public int solution(String[] strArr) {
        int answer = 0;
        int[] lengArr = new int[31];
        
        for (int i = 0; i < strArr.length; i++) {
            lengArr[strArr[i].length()]++;
        }

        for (int i = 0; i <= 30; i++) {
            answer = Math.max(answer, lengArr[i]);
        }
        
        return answer;
    }
}