[★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
23 예제입력 예제출력 11
1 4 1 2 4 2 4 2 3 4 4
50
내가 푼 풀이
이번 문제는 쉽게 풀자면 배열에 몇 개의 숫자를 담을지, 임의 갯수만큼 담은 숫자배열에 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
로는 문제가 안 풀리셔서 코드를 잘 못 적었나 생각하셨을 수도 있습니다. 나 자신을 믿고 내가 작성한 코드를 한번 던져보십쇼!
'Coding Test > 백준' 카테고리의 다른 글
[★2][백준10818번 for JAVA]최소, 최대 (0) | 2023.03.26 |
---|---|
[★2][백준10871번 for JAVA]X보다 작은 수 (0) | 2023.03.25 |
[★2][백준1110번 for JAVA]더하기 사이클 (0) | 2023.03.23 |
[★1][백준10952번 for JAVA]A+B - 4 (0) | 2023.03.22 |
[★1][백준10952번 for JAVA]A+B - 5 (0) | 2023.03.21 |
댓글