📝 문제
🔑 풀이 과정
· 책 개수 카운팅은 Map을 쓰고, 사전 순으로 가장 앞서는 제목을 출력하는 거니까 자바에서 기본제공하는 정렬을 쓰면 된다 까지는 파악했는데, 그 정렬을 어떻게 하지?에서 막혔었다.
근데 의외로 해결법은 간단했는데, → list로 따로 담아서 정렬을 시켜주면 된다.
· 왜 항상 자료구조를 문제당 1개만 쓰려고 하는지...! 여러개 써도 상관없는데! 좀 생각을 다차원적으로 좀 해봐 내 자신아
· 그리고 Map.entrySet()이 문제풀이하면서 좀 많이 쓰이는 것 같다. 이번 기회에 이거 사용법좀 익히는 걸로...
🔓 답안
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
Map<String, Integer> map = new HashMap<>();
//입력
int N = Integer.parseInt(br.readLine());
int max = 0; //제일 많이 판매된 갯수를 저장할 변수
for(int i = 0; i < N; i++){
String book = br.readLine();
int count;
if(!map.containsKey(book))
count = 0;
else
count = map.get(book) + 1;
map.put(book, count);
if(count > max)
max = count;
}
//입력 종료
//맵을 전체탐색 하면서, value가 max값인 경우, key(책 제목)를 List에 넣어줌
ArrayList<String> list = new ArrayList<>();
for(Map.Entry<String, Integer> entry: map.entrySet()){
if(entry.getValue() == max)
list.add(entry.getKey());
}
//정렬
Collections.sort(list);
String result = list.get(0); //가장 앞에있는 원소를 출력
//출력
bw.write(result + "\n");
bw.flush();
bw.close();
}
}
🖤 알고리즘 분류
- 자료 구조
- 문자열
- 정렬
- 해시를 사용한 집합과 맵
'PS > Baekjoon' 카테고리의 다른 글
[Baekjoon] 9095 - 1, 2, 3 더하기 (0) | 2023.07.21 |
---|---|
[Baekjoon] 1463 - 1로 만들기 (0) | 2023.07.20 |
[Baekjoon] 1269 - 대칭 차집합 (0) | 2023.07.18 |
[Baekjoon] 7785 - 회사에 있는 사람 (0) | 2023.07.17 |
[Baekjoon] 1541 - 잃어버린 괄호 (0) | 2023.07.16 |
댓글