본문 바로가기
Baekjoon 자바 코드/1차원 배열

[백준] 3052번 나머지 풀이 코드 (Java 자바)

by 망댕이 2024. 8. 2.
반응형

 

접근 방법)

이 문제는 배열의 초깃값을 이용하여 문제를 쉽게 풀 수 있다.

int형 배열일 경우 초깃값은 0이고, boolean형 배열일 경우 초깃값은 false이다.

이러한 점을 이용하여 42의 크기를 가진 배열을 생성한 후, 10개의 입력값을 42로 나누고 각각 값에 해당하는 배열 번호의 배열 값을 1 또는 ture로 할당한 후 for문을 이용하여 배열 안에 1이나 true를 가진 배열의 개수를 출력하면 된다.

 

 

▷ int형 배열 초기값 바꾸기

for문을 이용하여 입력 값으로 주어진 42개 배열만 초기값과 다르게 값을 바꿔준다.

int[] arr = new int[42];

for(int i = 0; i < 10; i++){
    int a = sc.nextInt(); // Scanner sc = new Scanner(System.in)
    int b = a%42;
    arr[b] = 1; 
}

 

▷ boolean형 배열 초기값 바꾸기

for문을 이용하여 입력 값으로 주어진 28개 배열만 초기값과 다르게 값을 바꿔준다.

boolean[] arr = new boolean[42];
        
for(int i = 1; i <= 10; i++){
   int a = sc.nextInt(); // Scanner sc = new Scanner(System.in)
   int b = a%42;
   g[b] = true;
}

 

이 방법을 이용해서 아래와 같이 코드를 완성해 보자.

정답 코드 1)

import java.util.Scanner;

class Main{
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        
        boolean arr[] = new boolean[42];
        int num= 0;
        
        for(int i = 0; i < 10; i++){
            int a = s.nextInt();
            int b = a%42;
            arr[b] = true;
        }
        
        for(int j = 0; j < 42; j++){
            if(arr[j] == true){
                num++;
            }
        }
        System.out.print(num);
    }
}

 

정답 코드 2)

import java.util.Scanner;

class Main{
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        
        int arr[] = new int[42];
        int num= 0;
        
        for(int i = 0; i < 10; i++){
            int a = s.nextInt();
            int b = a%42;
            arr[b] = 1;
        }
        
        for(int j = 0; j < 42; j++){
            if(arr[j] == 1){
                num++;
            }
        }
        System.out.print(num);
    }
}

 

반응형