Dev Hyeri

◖코딩 테스트◗▬▬▬▬▬▬▬▬▬/백준

[백준] ✔️5597 과제 안 내신 분..? (설명/코드/정답)

_hyeri 2024. 8. 11. 22:50

 

문제 링크 : https://www.acmicpc.net/problem/5597

 

 

 

1. 요구 사항 이해

시간, 메모리 제한 : 1초 / 128  MB

 

특별과제를 30명 중 28명이 제출했습니다. 제출하지 않은 2명의 출석번호를 구하는 프로그램을 작성.

학생번호 n : 1 ≤ n ≤ 30, 중복 없음

 

 

2. 설계/검증 

 

복잡도

시간 복잡도  최악의 경우  공간 복잡도
O(1)   O(1)

 

 

 

 

 

3. 정상 코드

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        // 입력을 위한 객체 생성
        Scanner scan = new Scanner(System.in);

        // 학생 30명에 대한 배열 선언, 기본값은 false
        boolean[] submitted = new boolean[30 + 1]; // 0은 사용 x

        // 제출한 학생 번호 입력
        for (int i = 1; i <= 28; i++) {
            int studentNumber = scan.nextInt();

            // 학생 번호 유효성 검사
            if (studentNumber < 1 || studentNumber > 30) {
                System.out.println("(1 ≤ 번호 ≤ 30)");
                return;
            }
            // 해당 학생 번호는 제출 상태를 참으로 변경 
            submitted[studentNumber] = true;
        }

        // 결과 출력
        for (int i = 1; i <= 30; i++) {
            if (!submitted[i]) {
                System.out.println(i);
            }
        }
        
        scan.close();
    }
}

 

 

 

 

추가 정리

* 입력을 받는 반복문의 범위는 28이다.

반복문의 범위를 30으로 하면 테스트 케이스가 제공하는 28개에서 추가 2개가 들어오길 기다리는 상태가 되므로 주의한다.