java
백준 1157 단어 공부 자바 java 해시맵 사용
by MiaCoder
2024. 1. 9.
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
// 문자열 입력받기
String str = sc.next().toUpperCase();
//대소문자 비교를 위해 모두 대문자로 변경
Map<Character, Integer> charFrequencyMap = new HashMap<>();
// 문자열별로 사용한 개수를 세기 위해 키, 값 형태로 저장하는 HashMap를 사용, 선
for(char c : str.toCharArray()) {// char c는 char타입의 배열이된 str을 순차적으로 반
if(Character.isLetter(c)) { // c가 문자라
charFrequencyMap.put(c, charFrequencyMap.getOrDefault(c, 0) + 1);
//charFrequencyMap에 c 값을 넣는다. 이 때 이미 있는 값이면 (c, c+1의 형태로
// 처음 넣는다면 (c, +1)의 값으로 넣는다.
// 만약 A값이 이미 있다면 A에 A의 값에 1을 더하라는 의미, A가 기존에 없다면 키에 A를 추가하고 값으로 1을 넣으라는 의미
}
}
char mostAlp = ' ';
// 가잠 많이 사용한 문자를 저
int max = 0;
// 최댓 값을 저
for(Map.Entry<Character ,Integer> entry : charFrequencyMap.entrySet()) {
//해시맵을 반복하기 위해 임의의 해시맵을 설정하고 반복함 for-each문 참
if(entry.getValue() > max) { // 값이 최대인 것을 찾음
max = entry.getValue();
mostAlp = entry.getKey();// 최댓값이 갱신되면 mostAlp에 저장
}
else if(entry.getValue() == max){
mostAlp = '?';
// 최댓값이 중복될 경우 '?'출력
}
}
System.out.print(mostAlp); // 출력
}
}