본문 바로가기

Java/프로그래머스

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

https://school.programmers.co.kr/learn/courses/30/lessons/181855

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

getOrDefault

[JAVA] Map - getOrDefault 이란? 사용법 및 예제 (tistory.com)

 

[JAVA] Map - getOrDefault 이란? 사용법 및 예제

getOrDefault - 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드 사용 방법 getOrDefault(Object key, V DefaultValue) 매개 변수 : 이 메서드는 두 개의 매개 변수를 허용합니

junghn.tistory.com

- 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드 

 

getOrDefault(Object key, V DefaultValue)

 

- key : 값을 가져와야 하는요소의 키

- defaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본 값

 

반환 값 : 찾는 키가 존재하면 해당 key에 매핑되어 있는 값을 반환하고, 그렇지 않으면 디폴트 값이 반환된다. 

 

 

정답 

 

import java.util.HashMap;

class Solution {
    public int solution(String[] strArr) {

        //key: 문자열의 길이 value: 길이가 같은 문자열의 개수 
        HashMap<Integer,Integer> map = new HashMap<>();
        
        for(String s : strArr)
        {
            int len = s.length();
            map.put(len, map.getOrDefault(len,0)+1);
        }
        
        int max = 0;
        for(int groupSize : map.values())
        {
            max = Math.max(max,groupSize);
        }
        
        return max;
    }
}

 

 

 

다른 사람의 풀이 

 

1)

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;
    }
}

 

 

2)

import java.util.*;

class Solution {
    public int solution(String[] strArr) {
        Map<Integer, ArrayList<String>> map = new HashMap<>();
        for (String str : strArr) {
            int len = str.length();
            if (map.containsKey(len)) {
                map.get(len).add(str);
            } else {
                ArrayList<String> temp = new ArrayList<>();
                temp.add(str);
                map.put(len, temp);
            }
        }

        int answer = 0;
        for (int len : map.keySet())
            answer = Math.max(answer, map.get(len).size());
        return answer;
    }
}