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

[백준] 5597번 과제 안 내신 분..? 풀이 코드 (Java 자바)

by 망댕이 2024. 7. 31.
반응형

접근 방법)

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

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

이러한 특징을 이용하여 입력 값에 해당하는 배열 번호는 초깃값과 다른 값으로 설정한 후 배열 1번부터 30번까지 for문을 이용하여 여전히 초깃값에 해당하는 배열 번호를 뽑아 출력하면 된다.

 

 

▷ int형 배열 초기값 바꾸기

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

int[] g = new int[31];

for(int i = 1; i <= 28; i++){
    int n = sc.nextInt(); // Scanner sc = new Scanner(System.in)
    g[n] = 1; 
}

 

▷ boolean형 배열 초기값 바꾸기

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

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

 

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


정답 코드 1)

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

// The main method must be in a class named "Main".
class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] g = new int[31];

        for(int i = 1; i <= 28; i++){
            int n = sc.nextInt();
            g[n] = 1;
        }
        for(int j = 1; j <= 30; j++){
            if(g[j]==0){
                System.out.println(j+"");
            }
        }
    }
}

 

정답 코드 2)

import java.util.Scanner;

class Main{
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        boolean[] g = new boolean[31];
        
        for(int i = 1; i <= 28; i++){
            int a = s.nextInt();
            g[a] = true;
        }
        for(int j = 1; j <= 30; j++){
            if(g[j] == false){
                System.out.println(j);
            }
        }
    }
}
반응형