문제 내용은 입력으로 문자열을 받아서, 가장 많이 나온 문자열을 출력해줘야 하는데 문자열 갯수가 동일할 경우에는 a-z 순으로 빠른 순서를 출력해줘야 한다
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
TreeMap<String, Integer> map = new TreeMap<>();
for (int i = 0; i < count; i++) {
String s = br.readLine();
map.merge(s, 1, Integer::sum);
}
int max = 0;
String maxKey = "";
for (String key : map.keySet()) {
if (max < map.get(key)) {
max = Math.max(max, map.get(key));
maxKey = key;
}
}
System.out.println(maxKey);
}
}
문제를 진행해보면 문자열을 Map에 넣어주면서 동일한 값이 나올때마다 1을 추가한 뒤 map.keySet()을 이용해 하나씩 빼 보면서 최대값인 항목의 key를 출력해주면 간단하게 끝날 것 같지만 최대값이 동일한 경우에는 key값이 a-z 순으로 빠른 값을 출력해줘야 하는데
TreeMap을 사용해주면 알아서 오름차순 정렬을 해 주기 때문에 이런 걱정을 할 필요도 없이 최대값만 확인한 후 출력해주면 끝이다.
Leave a Reply