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 sum = 0;
for (int i=0; i<n; i++) {
array[i] = sc.nextInt();
}
int v = sc.nextInt();
for (int i=0; i<n; i++) {
if (array[i] == v) {
sum += 1;
}
}
System.out.println(sum);
}
}
2. ArrayList 이용
import java.util.*;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int count = 0;
ArrayList<Integer> ints = new ArrayList<>();
for (int i=0; i<n; i++) {
ints.add(sc.nextInt());
}
int v = sc.nextInt();
for (int i=0; i<n; i++) {
if (ints.get(i) == v) {
count++;
}
}
System.out.println(count);
}
}
처음에는 이 코드에서 첫 번째 for 루프에 있는 ints.add를 for 없이 그냥 쓰고 밑의 for문만 돌렸었다
그러면 띄어쓰기를 구분자로 해서 입력을 여러 개 주는 순간 맨 처음 숫자만 ints에 들어가고 다음 숫자가 바로 v에 들어감
ex. 입력을 다음과 같이 줬을 때
11
1 4 1 2 4 2 4 2 3 4 4
2
출력은
System.out.println(n)
System.out.println(ints)
System.out.println(v)
11
1
4
사실 v값까지 이미 1 4 1 2 4...를 입력하면서 할당되어 버렸기 때문에 실제로 입력 마지막 줄의 2는 입력할 수조차 없다
루프가 안 되는데 공백을 구분자로 입력받는 nextInt() 때문에 띄어쓰기와 함께 여러 가지의 숫자를 입력하면 제대로 받지 못하는 것!
(루프가 정상적으로 되면 띄어쓰기로 구분해서 입력해도 잘 넣는다)
해결 방법으로는 for 루프를 하나 더 만들어서 입력받거나 숫자를 하나로 입력받고 split하는 방법이 있는데
해당 문제에서 입력이 띄어쓰기와 함께 주어졌기 때문에 split은 사용해도 정답으로 처리될 수는 없어 보임
'Programming Language > Java' 카테고리의 다른 글
[Java] for-each문(향상된 for문) (0) | 2023.11.17 |
---|---|
[Java] 백준 BOJ 10818: 최소, 최대 (0) | 2023.11.08 |
[Java] ArrayList로 입력 받기, nextInt에 관한 고찰 (0) | 2023.11.02 |
[Java] 백준 BOJ 10950: A + B - 3 (1) | 2023.10.18 |
[Java] 배열(Array)과 리스트(List) (1) | 2023.10.18 |