[코테 풀이] 문자열 묶기

시내·2023년 12월 12일
0

해시맵 없이 난 못 살아 못 살아 😗
이렇게 바로 풀릴 줄이야
앞으로 맛깔나게 써줄게~!

Q) 문자열 묶기

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

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

import java.util.*;

class Solution {
    public int solution(String[] strArr) {
        int answer = 0;
        Map<Integer, Integer> my_map = new HashMap<>();
        for(String s : strArr){
            if(!my_map.containsKey(s.length())){
                my_map.put(s.length(), 1);
            }
            else{
                int count = my_map.get(s.length());
                my_map.put(s.length(),count+1);
            }
        }
        Iterator<Integer> iter = my_map.values().iterator();
        int max = iter.next();
        int it = 0;
        while(iter.hasNext()){
            it = iter.next();
            if(max < it){
                max = it;
            }
        }
        answer=max;
        return answer;
    }
}

오랜만에 올리는 코테 풀이^_^
오늘 해시맵에 대해서 배웠다.

해시맵 자체가 익숙치 않아서 수업시간에 예제 푸는 데도 버벅거렸댜.
머쓱..

집 와서 기초 코테 문제들을 풀어보는데 마침! 해시맵으로 풀 수 있을 것 같은 문제를 마주했다.

바로 요 문제!
1) 해시맵을 사용해서 key 값은 string의 length로, value는 그 길이를 갖는 element의 개수로 지정을 한다.

2) 그리고 Iterator를 사용해서 value값을 하나씩 iterate하면서 max값을 찾아준다.

끝 !

*Iterator 사용시 주의할 점은! 바로 데이터가 소모된다는 거!
그래서 반드시 변수, 즉 여기서는 it 라는 변수에 next()값을 저장해두고 그 값을 가지고 비교를 해야된다.

profile
contact 📨 ksw08215@gmail.com

0개의 댓글