Vienna

백준10807번) 개수 세기 본문

알고리즘 문제 풀이

백준10807번) 개수 세기

아는개발자 2023. 5. 16. 22:45

문제

총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오.

 입력

첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거나 같으며, 100보다 작거나 같다.

 출력

첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다.


◆ 풀이

빈도수 구하기 문제다.

HashMap을 통해 입력받을 때부터 기록을 해둔다면 빠르게 해결할 수 있을 것이다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        HashMap<Integer, Integer> map = new HashMap<>();

        StringTokenizer st = new StringTokenizer(br.readLine());
        for(int i=0; i<n; i++){
            int value = Integer.parseInt(st.nextToken());
            map.put(value, map.getOrDefault(value, 0)+1);
        }

        System.out.println(map.getOrDefault(Integer.parseInt(br.readLine()), 0));
    }
}

쉬웠다.

Comments