https://www.acmicpc.net/problem/10807
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int[] numArr = new int[N];
for (int addNum = 0; addNum < N; addNum++) {
numArr[addNum] = scanner.nextInt();
}
int v = scanner.nextInt();
int cnt = 0;
for (int compare = 0; compare < N; compare++) {
if (v == numArr[compare]) {
cnt++;
}
}
System.out.println(cnt);
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int[] numArr = new int[N];
for (int addNum = 0; addNum < N; addNum++) {
numArr[addNum] = scanner.nextInt();
}
사용자로부터 정수의 개수를 받아 N에 대입합니다.
배열의 크기는 N의 개수만큼입니다.
0부터 N-1까지 반복하며 numArr 배열에 값을 넣습니다.
int v = scanner.nextInt();
int cnt = 0;
for (int compare = 0; compare < N; compare++) {
if (v == numArr[compare]) {
cnt++;
}
}
System.out.println(cnt);
찾으려고 하는 값을 사용자에게 입력 받아 변수 v에 대입합니다.
배열과 v의 주소값을 비교했을 때 동일하다면 (찾으려고 했던 값이라면) 체크해 줄 cnt 변수도 선언하고 0으로 초기화 합니다.
배열의 인덱스 안에 있는 값과 찾고자 하는 값인 v가 동일하다면 cnt를 +1 합니다.
비교가 모두 끝난다면 cnt의 값을 출력합니다.
만약 모두 동일하지 않다면 cnt를 0으로 초기화 해뒀기 때문에 0이 출력 됩니다.
여담
처음에 풀 때, 값을 모두 입력했는데 왜 1이 나오는지 궁금했습니다.
곰곰이 생각해보니 nextInt()를 입력 받는 변수의 위치가 잘못 되었다는 걸 알게 되었습니다.
아무리 콘솔에 나란히 입력을 한다고 해도 nextInt()의 위치를 따져보자면
N은 11 잘 입력 받았고, v가 numArr[] 보다 먼저 입력을 받는 위치가 되어있기 때문에, 콘솔 창에 1 4 1 2 ... 식으로 입력한다고 한들 v에 1의 값이 들어가게 됩니다. 나머지 값들 4, 1, 2, 4, 2, 4, 2, 3, 4, 4는 addNum for문에서 numArr[]에 입력되죠.
그렇기 때문에 compare for문의 if문에서 비교했을 때, 배열 안에 숫자 1은 1개밖에 없기 때문에 출력도 1이 나오게 됩니다.
변수 v와 cnt를 compare for문 위에 배치 시키고 다시 시도해봤습니다.
N은 11, addNum[]은 누락 된 값 없이 온전히 값을 받았고, v도 값 변화 없이 2를 받아 연산이 제대로 되었습니다.
바보 같은 실수를 했지만 이렇게 성장하는거죠 :)
이번 실수를 양분 삼아서 다음엔 더 잘할거에요!
참고
'백준 > Java' 카테고리의 다른 글
[백준][Java] 5597 - 과제 안 내신 분..? (0) | 2023.07.21 |
---|---|
[백준][Java] 15552 - 빠른 A+B (0) | 2023.07.21 |
[백준][Java] 10871 - X보다 작은 수 (0) | 2023.07.20 |
[백준][Java] 10952 - A+B - 5 (0) | 2023.07.11 |
[백준][Java] 10951 - A+B - 4 (0) | 2023.07.10 |