본문 바로가기
프로그래밍/백준 알고리즘 코드

백준 3052번 java 나머지 (boolean 배열)

by 졸린이 2020. 9. 4.
반응형

백준 3052번 java 나머지 (boolean 배열)


뭐 대충 일단 수를 10개 입력받는다. 그리고 42이로 나눠서 서로 다른 수가 몇 개인지 출력하라 인데 위에 예제처럼 수를 입력하면 나머지가 39, 40, 41, 0, 1, 2, 40, 41, 0, 1 이렇게 나온다. 중복되는 수를 제거하면 39, 40, 41, 0, 1, 2 이렇게 6개만 남는다. 그럼 6을 출력하는 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.Scanner;
 
//baekjoon_3052
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        boolean check[] = new boolean[42];
        int n;
        int cnt=0;
        
        for(int i=0; i<10; i++) {
            n = sc.nextInt();
            if(!check[n % 42])
                cnt++;
            check[n % 42= true;
        }
        System.out.println(cnt);
    }
}
cs

line 7 : 어떤 수를 42로 나눴을 때 나올수 있는 수는 0~41이므로 bool형식의 배열 크기를 42로 잡는다.

line 9 : 서로 다른 수가 나올때 만 카운트할 변수 선언.

line 11 : 10개 수를 입력하므로 10번 반복

line 13 : if(!check[n % 42]) 는 어떤 수를 42로 나눴을 때 나머지수의 해당되는 배열원소가 false값이면 if문안으로 들어가게 한다.

line 14 : if문에 들어오면 cnt값을 올려서 센다.

line 15 : 검사한 수를 true로 바꿔 나중에 또 같은 수가 나와도 if문 안으로 안들어가게 해 카운트하지 않게 한다.

line 17 : for문 후에 출력.

 

반응형

댓글