[Java] 백준 10807 개수 세기

시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율

1 초 256 MB 100824 62611 53823 63.188%

문제

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

 

입력

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

 

출력

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

풀이✔

1️⃣ 문제 분석하기

  • N개의 정수를 입력 받는다.
    • N개 만큼 정수를 입력한다
    • N개만큼 입력한 정수 중에 V가 몇 개인지 찾는다.

2️⃣ 요구 조건 구현하기

  • BufferedReader 를 사용해서 N개의 정수를 입력 받는다.
  • N개 만큼 정수를 담는 배열을 만들고 담는다.
  • V를 입력하고 V가 N개 배열에 포함 되어 있는지 찾는다.
    • for문에서 조건을 줘서 찾을 수 있다.

3️⃣ 슈도 코드

Buffredreader 입력
BufferedWriter 생성
StringTokenizer 생성

int N = 입력받기
int[] arrays = new int[N]
	
for(int i=0; i<N; i++) {
	arrays[i] = 입력받은 값 넣기
}

int v = 입력받기
int vSum = 0; //v합계 구하기
for(int i=0; i<N; i++) {
	if(arrays[i]=v) {
		vSum++;
	}
}

BufferedWriter로 값 읽어오기.

 

4️⃣ 코드 작성

package 알고리즘;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class B10807 {
	public static void main(String[] args) throws IOException {
		BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));

		// 배열 크기 N을 입력 받기
		int N = Integer.parseInt(bufferedReader.readLine());

		// 배열 입력 받기
		StringTokenizer stringTokenizers = new StringTokenizer(bufferedReader.readLine());
		int[] arrays = new int[N];
		for (int i = 0; i < N; i++) {
			arrays[i] = Integer.parseInt(stringTokenizers.nextToken());
		}

		//System.out.println(stringTokenizers.hasMoreTokens());
		//token이 없을시 false, 남아있을 시 true

		// 찾으려는 정수 V 입력 받기
		int V = Integer.parseInt(bufferedReader.readLine()); //한줄을 문자열로 읽어온다.

		// 배열 순회하면서 V와 일치하는 원소 개수 세기
		int vSum = 0;
		for (int i = 0; i < N; i++) {
			if (arrays[i] == V) {
				vSum++;
			}
		}

		// 결과 출력
		bufferedWriter.write(String.valueOf(vSum));
		bufferedWriter.newLine(); //줄 바꿈

		// BufferedWriter를 사용했으면 마지막에 flush() 호출하여 버퍼를 비워야 합니다.
		bufferedWriter.flush();
	}
}

 

5️⃣ 핵심 파악하기

이 문제는 반복문의 특징과 배열의 알아야 하며,

V와 일치하는 원소를 세기위한 조건을 준 다는 생각만 있었으면 풀 수 있었습니다.

728x90