HashMap, TreeSet(자료구조) - 0401. 학급 회장(해쉬)
private static String solution(int n, String str) {
String answer = "";
int max = Integer.MIN_VALUE;
HashMap<String, Integer> map = new HashMap<>();
for(int i=0; i<n; i++ ) {
int x = 0;
String s = String.valueOf(str.charAt(i));
if(map.containsKey(s)) x = map.get(s);
map.put(s, ++x);
}
for(String key : map.keySet()) {
if(map.get(key) > max) {
answer = key;
max = map.get(key);
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
String str = sc.nextLine();
System.out.println(solution(n, str));
}
public char solution(int n, String s){
char answer=' ';
HashMap<Character, Integer> map=new HashMap<>();
for(char x : s.toCharArray()){
map.put(x, map.getOrDefault(x, 0)+1);
}
int max=Integer.MIN_VALUE;
for(char key : map.keySet()){
if(map.get(key)>max){
max=map.get(key);
answer=key;
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
String str=kb.next();
System.out.println(T.solution(n, str));
}
해당 문제는 Map
을 이용하여 푸는 문제이다. Map
은 Java에서 제공하는 자료구조로,
Key
와 Value
로 데이터를 핸들한다. 특징으로 Key
는 유일하며, Value
는 중복이 가능하다.
나의 풀이에서는 map.containsKey(key)
메소드를 통해 존재 유무를 확인한 후 값을 추가하도록
구성하였고, 강의에서는 map.getOrDefault(key, value)
메소드를 사용하였다.
이후 map.ketSet()
를 순회하며 가장 큰 값을 갖고 있는 key
를 찾는다.