Algorithm/Java

[백준] n.3052 - 서로 다른 나머지 개수 구하기

보라해바라기 2023. 5. 12. 10:20
SMALL

1. 문제

https://www.acmicpc.net/problem/3052

 

3052번: 나머지

각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.

www.acmicpc.net

2. 사용 개념

- Scanner

- 반복문 (for문), 이중 반복문

- boolean 변수, int 변수

- 1차원 배열

 

3. 나의 풀이 (*은 잘 안풀린 부분)

import java.io.*;
import java.util.*;

public class Main {

  public static void main(String[] args) {

    Scanner s = new Scanner(System.in);


    //*boolean 이용해서 동일여부 판단!!*
    
    int n, m, i, j, cnt;
    // n: 자연수, m: 나머지
    // cnt: 서로 다른 나머지의 수

    boolean bl; // *배열 값 동일 여부 판단 변수
    cnt = 0;

    int[] arr = new int[10];
    // 나머지 저장소

    for (i = 0; i < arr.length; i++) {
      n = s.nextInt();
      m = n % 42;
      arr[i] = m;
    }

    for (i = 0; i < arr.length; i++) {
      bl = false; // * 기본값 초기화!
      for (j=i+1; j<arr.length; j++){
        if (arr[i] == arr[j]) {
          bl = true;
          break;
        }
      }
      if (bl==false){
        cnt++;
      }
    }

    System.out.println(cnt);

  }

}

 

4. 짚고 넘어가기!

- boolean 변수를 통해 T/F를 판단해야 함!

- boolean 변수를 for문에서 사용할 시, for문이 돌 때 마다 false로 초기화!

- bl이 true인 경우, break를 통해 상위 for문 빠져나오기!

- bl이 false인 경우, cnt 값 증가! 

728x90