학급 회장을 뽑는데 후보로 기호 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()를 기억하자