코딩 테스트

[코딩테스트] 백준 3052번: 나머지

dev.jelee 2025. 5. 24. 00:33

# 문제

 

# 코드

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

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

    int B = 42;
    int[] num = new int[10];
    int count = 0;

    // 42로 나눈 나머지값 저장.
    for (int i = 0; i < num.length; i++) {
      num[i] = Integer.parseInt(br.readLine()) % B;
    }

    // 중복되는 값 제외
    for (int i = 0; i < num.length; i++) {
      boolean x = false;

      // j < i 조건식을 통해서 계속 비교.
      for (int j = 0; j < i; j++) {
        if (num[i] == num[j]) { // 중복되는 값은 true로 저장.
          x = true;

          break;
        }
      }

      // 중복되지 않은 값은 count++
      if (!x) {
        count++;
      }
    }

    System.out.println(count);
  }
}

 

# 입/출력 결과

 

# 과정

  1. BufferedReader + InputStreamReader 클래스를 사용하여 입력값 받기.
  2. int B = 42 저장.
  3. int[] num에 10 크기만큼 선언.
  4. int count = 0; 생성
  5. for문으로 num[i] 마다 입력값 받아서 % B한 값 저장.
  6. for문 + 중첩 for문을 사용하여 계산
    • : num[i]와 num[j]를 비교하는데, j < i 조건을 걸어서 하나씩 순차적으로 값을 비교하여 값이 같지 않으면 count가 증가되도록 계산
  7. count 출력.

 

# 느낀 점

  • 이번 문제를 풀면서 머리로는 계산이 되는데, 코드로 작성하려니 계속 실패했었다. 결국 chat-gpt의 도움을 얻어서 풀었다.
  • 내가 작성한 코드는 같은 값을 count 해서 10에서 빼는건데, 같은 값들이 없으면 0이 출력되어 버린 점에서 막혔었다.
  • 부족한 건 바로 boolean 타입을 활용해서 true, false로 수를 count 할 수 있다는 것이었다. bolean 타입을 활용해봐야겠다 생각은 했었는데 머리로는 코드가 안 떠올라서 포기했었는데..
  • 그래도 이번에 알게되었으니 까먹지 말아야겠다.