[★2][백준10807번]개수 세기 (JAVA)

Date:     Updated:

카테고리:

태그:

[★2][백준10807번]개수 세기 (JAVA)

10807번 문제 ☞ https://www.acmicpc.net/problem/10807

난이도 ☞ [★2]

개수 세기

  • 문제
    • 총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오.
    • 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거나 같으며, 100보다 작거나 같다.
    • 첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다.

      예제입력 예제출력
      11
      1 4 1 2 4 2 4 2 3 4 4
      2
      3
      예제입력 예제출력
      11
      1 4 1 2 4 2 4 2 3 4 4
      5
      0

내가 푼 풀이

이번 문제는 쉽게 풀자면 배열에 몇 개의 숫자를 담을지, 임의 갯수만큼 담은 숫자배열에 v라는 숫자가 몇 개인지 출력을 하는 문제이다. 이 또한 매우 쉽다고 생각됩니다. 이번 문제는 BufferedReader를 무조건적으로 사용하여 작성해보려고 합니다. 이유는 BufferedReader로 되어진 이번 문제에 대한 정보가 너무 없어서 필히 다른 분들도 보셨으면 좋겠다는 마음이 큽니다. 우선 먼저 Scanner로 풀이한 코드는 다음과 같습니다.

[ 풀이 1 ]

메모리 : 17824KB
시간 : 224ms

Scanner

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int N = s.nextInt(); 		// 몇개의 정수값을 입력 받을 건지
		int[] arr = new int[N]; 	// 입력받을 Array
		
		for (int i = 0; i < N; i++) {
			arr[i] = s.nextInt(); 	// Array에 담음
		}

		int v = s.nextInt(); 		// Array에 담긴 어떠한 값을 셀 건지
		int cnt = 0;
		for (int i = 0; i < arr.length; i++) {
			if (v == arr[i]) {
				cnt++;
			}
		}
		System.out.println(cnt);
	}
}

위의 방식은 제일 기본적인 Scanner방식입니다. 다음 풀이는 위에서 말씀드린 것과 같이 BufferedReader로 문제를 풀어보려고 합니다. 코드는 다음 아래와 같습니다. 이클립스로 문제를 풀고 옮겨적는 과정을 하고 있는데 제 이클립스에서는 안되는데 코드 상에 문제가 없는 것 같아 옮겨서 답을 적어보니 백준에서는 점수가 매겨지는 것을 보아하니 제 버전이 조금 다른가봅니다. BufferedReader코드 구현입니다.

[ 풀이 2 ]

메모리 : 17656KB
시간 : 204ms

BufferedReader

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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()); // 몇개의 정수값을 입력 받을 건지
		int[] arr = new int[N]; // 입력받을 Array

		StringTokenizer st = new StringTokenizer(br.readLine());
		for (int i = 0; i < N; i++) {
			arr[i] = Integer.parseInt(st.nextToken()); // Array에 담음
		}
		int v = Integer.parseInt(br.readLine()); // Array에 담긴 어떠한 값을 셀 건지
		
		int cnt = 0;
		for (int i = 0; i < N; i++) {
			if (v == arr[i]) {
				cnt++;
			}
		}
		br.close();
		System.out.println(cnt);
	}
}

이번 문제는 아마 버전이 맞지 않으면 BufferedReader로는 문제가 안 풀리셔서 코드를 잘 못 적었나 생각하셨을 수도 있습니다. 나 자신을 믿고 내가 작성한 코드를 한번 던져보십쇼!

BKJN 카테고리 내 다른 글 보러가기

댓글 남기기