개수 세기

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 256 MB 174666 106339 88615 61.542%

문제

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

입력

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

출력

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

예제 입력 1 복사

11
1 4 1 2 4 2 4 2 3 4 4
2

예제 출력 1 복사

3

예제 입력 2 복사

11
1 4 1 2 4 2 4 2 3 4 4
5

예제 출력 2 복사

0

 

 


문제 자체는 입력으로 주어지는 배열에서 V값보다 같은 수의 개수를 찾아 출력하면 되는 간단한 문제이다.

 

입력은 세줄로 나뉘어서 받아야 한다 :

첫 번째 줄배열의 크기

두 번째 줄은 배열에 들어갈 정수 N개가 주어진다.

세 번째 줄은 배열에서 찾아야 할 정수 V가 주어진다.

 

입력될 값이  N(1 ≤ N ≤ 100) 와 X(-100 ≤ X ≤ 100)여서 받을 데이터는 많지 않지만.

Arrays의 함수들을 연습해보려고, BufferedReader를 사용하기로 했다.

 

import java.io.*;
import java.util.Arrays;

public class CountingNumbers {
    public static void main(String[] args) throws Exception{
    	// 입력값 받을 준비
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        // 첫 번째 배열의 크기
        int a = Integer.parseInt(br.readLine());
        
        // 두 번째 배열에 들어갈 요소들을 split을 사용하여 String 배열로 저장
        String[] tmp = br.readLine().split(" ");
        // Arrays의 stream을 활용하여 tmp 배열에 들어간 요소들을 int로 형변환
        int[] N = Arrays.stream(tmp)
                    .mapToInt(Integer::parseInt)
                    .toArray();
                    
        // 세 번째 찾아야할 V값 저장
        int V = Integer.parseInt(br.readLine());
        
        // 찾아야할 값이 1인데 일전에 받아놓은 배열 N의 순서가 뒤죽박죽이라
        // 처음부터 끝까지 찾아야 한다면 오래 걸린다.
        // 오름차순으로 정렬한다.
        Arrays.sort(N);
        
        // 개수 카운팅
        int count = 0;
        
        for(int i=0; i<a;i++){
            if(N[i] < V) { // N[i]의 값이 V보다 작을 경우 넘어간다.
              continue;
            } else if(N[i] == V) { // N[i]의 값이 V랑 같을 경우 count증가
                count++;
            } else {
                break; // 만약 V 개수 찾기가 끝나 N[i]의 값이 V보다 클 경우 for문을 일찍 끝낸다.
            }   
        }
        System.out.println(count);
    }
}

 

블로그 이미지

Ahan

책, 영화, 게임! 인생의 활력 요소가 되는 취미들을 하자!

,