문제 : boj18294
1. 우선 각 String마다 카운팅 할 수 있어야 한다. HashMap을 사용하면 편하게 할 수 있다.
2. 매번 각 String을 카운팅하면서, 그 중 현재까지 가장 큰 값과 가장 큰 값을 가지는 동물의 이름을 따로 저장해둔다. (혹은 마지막에 해시맵에서 key들을 뽑아낸 후 확인해도 된다.)
3. 다른 동물들의 합보다 어떠한 동물이 더 많으려면 (int)N/2보다 더 많은 수를 가져야 한다. (홀수라도 5/2 = 2 이므로 3 이상이면 더 많은것이다.)
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
HashMap<String, Integer> hm = new HashMap<>();
int total = 0;
int max = 0;
String maxStr = null;
while (n-->0) {
String cur = br.readLine();
if (!hm.containsKey(cur))
hm.put(cur, 0);
hm.put(cur, hm.get(cur)+1);
if (hm.get(cur) > max) {
max = hm.get(cur);
maxStr = cur;
}
total++;
}
System.out.println(max > total/2 ? maxStr : "NONE");
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'PS > BOJ' 카테고리의 다른 글
백준 18917 자바 - 수열과 쿼리 38 (BOJ 18917 JAVA) (0) | 2022.02.20 |
---|---|
백준 4351 자바 - Hay Points (BOJ 4351 JAVA) (0) | 2022.02.19 |
백준 20291 자바 - 파일 정리 (BOJ 20291 JAVA) (0) | 2022.02.17 |
백준 12927 자바 - 배수 스위치 (BOJ 12927 JAVA) (0) | 2022.02.16 |
백준 1339 자바 - 단어 수학 (BOJ 1339 JAVA) (0) | 2022.02.15 |
댓글