반응형
1. 문제
총 N개의 정수가 주어졌을 떄, 정수 v가 몇개인지 구하는 프로그램 작성하시오.
2. 입력
첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거나 같으며, 100보다 작거나 같다.
3. 출력
첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다.
4. 예제
예제 입력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
5. 문제 해석
1) 첫 줄의 숫자는 배열의 크기(비교해야할 숫자의 개수)를 의미한다.
2) 두번째 줄의 숫자는 비교 숫자로, 배열에 저장된다.
3) 세번째 줄의 숫자는 찾아야 할 기준 숫자를 의미한다.
즉, 배열의 크기에 맞추어 비교 숫자가 배열에 저장되고, 배열 안에서 기준 숫자와 일치하는 개수를 찾는 프로그램을 구현하는 문제이다.
6. 작성 코드
작성한 코드1> 기능별 분류에 초점을 두어 접근
import java.util.Scanner;
public class Main {
static Scanner sc = new Scanner(System.in);
// 최초 각 메소드에서 Scanner 사용 후 closing 하는 방향으로 접근하였으나,
// 런타임 에러 (NoSuchElement) 발생하여 전역 변수로 선언
public static void main(String[] args) {
int[] array = getInputArray();
int v = getInputValue();
int check = countOccurrences(array, v);
System.out.println(check);
sc.close();
}
public static int[] getInputArray() {
int N = sc.nextInt();
int[] array = new int[N];
for (int i = 0; i < N; i++) {
array[i] = sc.nextInt();
}
return array;
}
public static int getInputValue() {
int v = sc.nextInt();
return v;
}
public static int countOccurrences(int[] array, int v) {
int check = 0;
for (int i = 0; i < array.length; i++) {
if (v == array[i]) {
check++;
}
}
return check;
}
}
작성한 코드2> Main 클래스 1개를 사용하여 접근 (최초 작성 코드)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] array = new int[N];
int check = 0;
for(int i = 0; i < N; i++) {
array[i] = sc.nextInt();
}
int v= sc.nextInt();
for(int i = 0; i < array.length; i++) {
if (v == array[i]){
check++;
}
}
System.out.println(check);
}
}
반응형