문제 풀이 (JAVA)
import java.io.*;
import java.util.*;
public class part4_1 {
public static void main(String[] args) throws IOException {
// 학급 회장(해쉬)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
char [] ch = new char[N];
String str = br.readLine();
ch = str.toCharArray();
char answer = solution(ch);
bw.write(answer);
bw.flush();
bw.close();
}
private static char solution(char [] charr) {
char result =' ';
int max=0;
HashMap<Character,Integer> map = new HashMap<>();
for(int i=0; i< charr.length; i++) {
// or if문 (map.containsKey(charr[i]))
map.put(charr[i], map.getOrDefault(charr[i],0)+1);
}
for(Character key : map.keySet()) {
if(max < map.get(key)) {
max = map.get(key);
result = key;
}
}
return result;
}
}
해시 함수 정리
map.put(key,value) : map에 해당되는 key에 value를 INSERT or UPDATE 한다.
map.get(key) : key에 해당하는 value를 리턴한다.
map.containsKey(key) : map에 key가 존재하는지 확인하여 존재하면 true, 존재하지 않을 경우 false를 리턴한다.
map.getOrDefault(key,0) : map에 key가 존재하면 key의 value를 리턴하고, key가 존재하지 않으면 0을 리턴한다.
map.size() : map의 사이즈를 리턴한다.
map.remove(key) : key의 value를 출력하고, 해당 되는 key를 map에서 제거한다.
for (Character key : map.keySet()) : key를 순서대로 탐색한다.
주요 핵심 포인트
1. 해쉬함수를 외워야 풀수 있는 문제로 해시함수를 외운다.
2. 가장 기초가 되는 key , value 개념을 알아야 풀 수 있는 문제이다.
'알고리즘' 카테고리의 다른 글
[해쉬맵+슬라이딩윈도우] 매출액의 종류 (인프런 알고리즘 4-3) (0) | 2022.06.16 |
---|---|
[해쉬맵] 아나그램(해쉬) (인프런 알고리즘 4-2) (0) | 2022.06.14 |
[투포인터+슬라이딩윈도우] 최대 길이 연속부분수열 (인프런 알고리즘 3-6) (0) | 2022.06.12 |
[투포인터+슬라이딩윈도우] 연속된 자연수의 합 (인프런 알고리즘 3-5) (0) | 2022.06.12 |
[슬라이딩윈도우] 최대 매출 (인프런 알고리즘 3-3) (0) | 2022.06.12 |