profile image

L o a d i n g . . .

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를 받아 연산이 제대로 되었습니다.

 

바보 같은 실수를 했지만 이렇게 성장하는거죠 :)
이번 실수를 양분 삼아서 다음엔 더 잘할거에요!

참고

1. https://help.acmicpc.net/judge/rte/NoSuchElement

'백준 > 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
복사했습니다!