본문 바로가기
PS/BOJ

백준 18294 자바 - Biodiversity (BOJ 18294 JAVA)

by Nahwasa 2022. 2. 18.

문제 : 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();
    }
}

 

댓글