학급 회장(Hash)

최준호·2021년 8월 20일
0

알고리즘 강의

목록 보기
24/79

설명

학급 회장을 뽑는데 후보로 기호 A, B, C, D, E 후보가 등록을 했습니다.

투표용지에는 반 학생들이 자기가 선택한 후보의 기호(알파벳)가 쓰여져 있으며 선생님은 그 기호를 발표하고 있습니다.

선생님의 발표가 끝난 후 어떤 기호의 후보가 학급 회장이 되었는지 출력하는 프로그램을 작성하세요.

반드시 한 명의 학급회장이 선출되도록 투표결과가 나왔다고 가정합니다.

코드

public class ClassPresident {
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int input1 = in.nextInt();
        String str = in.next();
        char[] chars = str.toCharArray();

        String solution = solution(chars);
        System.out.println(solution);
    }
    public static String solution(char[] arr){
        String answer = "";
        Map<String, Integer> map = new HashMap<>();
        int max = 0;
        for(char s : arr){
            map.put(String.valueOf(s), map.getOrDefault(String.valueOf(s), 0)+1);
        }

        for(String key : map.keySet()){
            int value = map.get(key);
            if(value > max){
                max = value;
                answer = key;
            }
        }

        return answer;
    }
}

거의 오랜만에 강사님이랑 내 풀이가 똑같은 문제였다. hash로 푸는 문제는 getOrDefalut() 메서드를 아는 순간 너무 쉬워졌었다. 물론 쉬운 문제 단계에서...

해쉬 문제 getOrDefault()를 기억하자

0개의 댓글

관련 채용 정보