본문 바로가기
백준 문제 풀이/1차원 배열

(#5597 Java) 과제 안 내신 분..?

by _비니_ 2023. 8. 9.
문제

 

 

문제 이해

 

30명 학생 중 28명만 과제를 제출했는데, 제출하지 않은 출석 번호순서대로 (작은 순서대로) 구하는 문제.

 

문제 해결

 

왜 문제를 처음보면 알고리즘이 바로 생각나지 않는 거지,,

사실 차분하게 생각해보면 생각보다 쉽게 풀리는 문제이다.

 

우선 1부터 30까지 모든 출석번호가 들어있는 고정적인 배열 하나와,

입력 받을 28개의 출석번호가 담긴 배열 하나가 필요하다.

int[] array1 = new int[30];
int[] array2 = new int[28];

 

 1부터 30까지 모든 출석번호가 들어있는 배열을 만들어보자

for (int i = 0; i < array1.length; i++) {
	array1[i] = i + 1; //1번부터 저장하기 위해 i + 1
}

 

그리고 28개의 출석번호를 입력 받기 위해 array2 크기만큼 반복해 입력 받는 코드를 작성한다.

for (int i = 0; i < array2.length; i++) {
	array2[i] = in.nextInt();
}

 

array1과 array2를 비교한다. 두 배열에 같은 번호가 있으면 번호를 0으로 바꿔 모든 숫자가 있는 array1에 넣어준다★

for (int i = 0; i < 30; i++) {
	for (int j = 0; j < 28; j++) {
    	if(array1[i] == array2[j]) {
        	array1[i] = 0;
        }
    }
}

 

같은 번호들은 0으로 바꿔 array1에 넣어줬으니, 0이 아닌 두 번호가 제출 안 한 출석번호가 된다. 이를 출력해주면 끝!!

for (int i = 0; i < 30; i++) {
	if(array1[i] != 0) {
    	System.out.println(arrya1[i]);
    }
}

 

 

최종 코드

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
    	
        Scanner in = new Scanner(System.in);
        
        int[] array1 = new int[30];
        int[] array2 = new int[28];
        
        for(int i = 0; i < array1.length; i++) {
        	array1[i] = i + 1;
        }
        
        for(int j = 0; j < array2.length; j++) {
        	array2[j] = in.nextInt();
        }
        
        for(int i = 0; i < array1.length; i++) {
        	for(int j = 0; j < array2.length; j++) {
            	if (array1[i] == array2[j]) {
                	array1[i] = 0;
                }
            }
        }
        
        for(int i = 0; i < array1.length; i++){
        	if(array1[i] != 0) {
            	System.out.println(array1[i]);
            }
        }
    }
}
반응형

'백준 문제 풀이 > 1차원 배열' 카테고리의 다른 글

(#10811 Java) 바구니 뒤집기  (0) 2023.08.11
(#3052 Java) 나머지  (0) 2023.08.09
(#10813 Java) 공 바꾸기  (0) 2023.08.08
(#10810 Java) 공 넣기  (0) 2023.08.04
(#2562 Java) 최댓값  (0) 2023.08.03