처음 입력한 N 개의 숫자만큼 팔린 책의 이름을 입력하고 가장 많이 팔린 책을 출력하되
사전 순으로 가장 앞에 있는 책을 출력하는 문제입니다.
HashMap 을 이용해서 풀어보았습니다.
getOrdDefault () 메서드로 HashMap 에 넣으려는 책의 이름이 존재한다면 해당 책의 수를 반환해주고
존재하지 않는다면 기본값으로 설정한 0을 반환하도록 해서 수량을 1 더해줘 다시 넣어줍니다.
keySet() 로 모든 책의 이름을 갖고와 책 이름에 해당하는 수량을 비교해 가장 많이 팔린 책의 수를 확인합니다.
다시 keySet() 메서드를 사용해 책 이름으로 구성되어 있는 리스트를 만들고
리스트를 오름차순인 사전순으로 정렬합니다.
그리고 리스트에서 책 이름을 하나씩 꺼내 책 이름에 해당하는 책의 수가 가장 많이 팔린 책의 수와 동일하다면
출력한 후 break 를 걸어주어 종료합니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
public class p1302 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
HashMap<String, Integer> hashMap = new HashMap<>();
ArrayList<String> ar;
int N = Integer.parseInt(br.readLine());
for(int i=0; i<N; i++) {
String book = br.readLine();
hashMap.put(book, hashMap.getOrDefault(book, 0) + 1);
}
int max = Integer.MIN_VALUE;
for (String s : hashMap.keySet()) {
max = Math.max(max, hashMap.get(s));
}
ar = new ArrayList<>(hashMap.keySet());
Collections.sort(ar);
for (String s : ar) {
if(max == hashMap.get(s)) {
System.out.println(s);
break;
}
}
}
}
'Baekjoon' 카테고리의 다른 글
[백준] 10819번 - 차이를 최대로 - Java (0) | 2022.11.02 |
---|---|
[백준] 3036번 - 링 - Java (0) | 2022.10.05 |
[백준] 2693번 - N번째 큰 수 - Java (0) | 2022.09.18 |
[백준] 10867번 - 중복 빼고 정렬하기 - Java (0) | 2022.09.08 |
[백준] 10825번 - 국영수 - Java (0) | 2022.08.16 |
댓글