728x90
300x250
https://www.acmicpc.net/problem/1302
728x90
해시맵을 사용하면 뚝딱이다.
<Java코드>
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//System.setIn(new FileInputStream("Test.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
HashMap<String,Integer> map =new HashMap<String,Integer>();
for (int tc = 0; tc < N; tc++) {
st = new StringTokenizer(br.readLine());
String book = st.nextToken();
if(map.containsKey(book))
map.put(book, map.get(book)+1);
else
map.put(book, 1);
}
ArrayList<String> keySet = new ArrayList<String>(map.keySet());
Collections.sort(keySet, new Comparator() {
@Override
public int compare(Object s1, Object s2) {
if(map.get(s1) > map.get(s2))
return -1;
else if(map.get(s1) == map.get(s2))
return s1.toString().compareTo(s2.toString());
else
return 1;
}
});
System.out.println(keySet.get(0));
}
}
이 문제의 핵심코드는 ArrayList로 keyset() 받은 다음 value에 따라 key 정렬하는 것.
List통해 HashMap 정렬하기 완료우...,,,,
ArrayList<String> keySet = new ArrayList<String>(map.keySet());
Collections.sort(keySet, new Comparator() {
728x90
'알고리즘 > 그 외' 카테고리의 다른 글
백준 2910번: 빈도 정렬 [정렬][Map] - Java (0) | 2023.07.25 |
---|---|
백준 18870번: 좌표 압축 [정렬][좌표압축] - Java (0) | 2023.07.23 |
백준 7785번: 회사에 있는 사람 [정렬][Set] -Java (0) | 2023.07.19 |
백준 10814번: 나이순 정렬 [정렬] -Java (0) | 2023.07.12 |
백준 2817번: ALPS식 투표 - [구현][정렬] (0) | 2023.06.16 |