코딩 테스트

[코딩테스트] 백준 10807번: 개수 세기

dev.jelee 2025. 5. 19. 01:43

# 문제

 

# 코드

 ▼ 1번 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    int N = Integer.parseInt(br.readLine()); // 몇 개 정수 입력 받을 지.
    String[] input = br.readLine().split(" "); // 입력 받을 정수 배열 선언과 초기화.
    int V = Integer.parseInt(br.readLine()); // 어떤 정수를 찾을지.
    int[] numArr = new int[N];
    int count = 0;

    for (int i = 0; i < N; i++) {
      numArr[i] = Integer.parseInt(input[i]);

      if (numArr[i] == V) {
        count ++;
      }
    }    

    bw.write(count + "\n");
    bw.flush();
    bw.close();
    br.close();
  }
}

 

▼ 2번 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;

public class Main {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    int N = Integer.parseInt(br.readLine()); // 몇 개 정수 입력 받을 지.
    String[] input = br.readLine().split(" "); // 입력 받을 정수 배열 선언과 초기화.

    int V = Integer.parseInt(br.readLine()); // 어떤 정수를 찾을지.
    long count = (int) Arrays.stream(input)
                      .limit(N) // N개까지만 사용
                      .filter(x -> Integer.parseInt(x) == V)
                      .count();

    bw.write(count + "\n");
    bw.flush();
    bw.close();
    br.close();
  }
}

 

▼ 3번 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;

public class Main {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    int N = Integer.parseInt(br.readLine());
    int[] numbers = Arrays.stream(br.readLine().split(" "))
                          .mapToInt(Integer::parseInt)
                          .toArray();

    int V = Integer.parseInt(br.readLine());

    int count = (int) Arrays.stream(numbers, 0, N)
                      .filter(x -> x == V)
                      .count();

    bw.write(count + "\n");
    bw.flush();
    bw.close();
    br.close();
  }
}

 

# 입/출력 결과

 ▼ 1번 코드 결과

 

▼ 2번 코드 결과

 

▼ 3번 코드 결과

 

# 과정

▼ 1번 코드 과정

  1. BufferedReader + InputStreamReader 클래스를 사용하여 입력값 받기.
  2. BufferedWriter + OutputStreamWriter 사용해서 출력하기.
  3. int N에 입력 값을 받아서 숫자로 형변환하기.
  4. String[] input에 공백 기준으로 나누어서 값을 저장하기.
  5. int V에 어떤 정수를 찾을지 값 받아서 숫자로 형변환해서 저장하기.
  6. int[] numArr을 N개 만큼 미리 만들기.
  7. int count 만들기.
  8. for문 사용해서 계산하기.
    • : N번만큼 반복하는데, numArr[i]로 하여 input[i]를 형변환하여 저장하기.
    • : if문을 사용해서 numArr[i]에 V와 동일한 값이 있으면 count에 증가 연산을 해준다.
  9. .write()를 사용해서 count를 출력하기.
  10. bw와 br을 .close() 해주기.

 

▼ 2번 코드 과정

  1. BufferedReader + InputStreamReader 클래스를 사용하여 입력값 받기.
  2. BufferedWriter + OutputStreamWriter 사용해서 출력하기.
  3. int N에 입력 값을 받아서 숫자로 형변환하기.
  4. String[] input에 공백 기준으로 나누어서 값을 저장하기.
  5. int V에 어떤 정수를 찾을지 값 받아서 숫자로 형변환해서 저장하기.
  6. int[] numArr을 N개 만큼 미리 만들기.
  7. int count 만들기.
  8. for문 사용해서 계산하기.
    • : N번만큼 반복하는데, numArr[i]로 하여 input[i]를 형변환하여 저장하기.
    • : if문을 사용해서 numArr[i]에 V와 동일한 값이 있으면 count에 증가 연산을 해준다.
  9. .write()를 사용해서 count를 출력하기.
  10. bw와 br을 .close() 해주기.

 

▼ 3번 코드 과정

  1. BufferedReader + InputStreamReader 클래스를 사용하여 입력값 받기.
  2. BufferedWriter + OutputStreamWriter 사용해서 출력하기.
  3. int N에 입력 값을 받아서 숫자로 형변환하기.
  4. int[] numbers에 Arrays를 활용하기.
    • : .stream() 사용하여 입력받은 값을 공백 기준으로 나누고,
    • : .mapToInt() 사용하여, 입력받은 값을 숫자형으로 타입 변환시켜서 다음으로 넘긴다.
    • : 형변환된 요소들을 .toArray()를 사용하여 배열로 저장한다.
  5. int V에 어떤 정수를 찾을지 입력값 받아서 저장하기.
  6. int count에 Arrays 사용.
    • : .stream()을 사용하여 입력받은 numbers를 0부터 N개까지
    • : .filter()을 사용하여 순회하는 요소가 V와 같은지 조건을 통해 있으면 true 반환.
    • : true마다 .count() 하기.

 

# 느낀 점

  • 배열을 사용하다보니 어색해서 익숙해지는데 시간이 걸렸다.
  • 타입을 배열로 지정해서 하는 것과 Arrays를 활용해서 하는 방법을 찾아가며 했는데, 익숙하지 않아서 정리하고 공부하는데 시간이 이틀이나 시간이 걸렸다. 그래도 재밌는 시간이었다.
  • 아무래도 모르는 것 투성이라서 처음에는 힘들지만 계속 사용하다보면 실력이 늘지 않을까 생각을 한다. 힘내자!