728x90

https://www.acmicpc.net/problem/5597

 

5597번: 과제 안 내신 분..?

X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데,

www.acmicpc.net

문제

X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다.

교수님이 내준 특별과제를 28명이 제출했는데, 그중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오.

 

풀이

과제를 제출하지 않은 학생 두 명의 출석번호를 구하는 문제이다.

편의상 boolean 배열의 크기를 31로 하여 0번째 항을 버리고, 1번째 항부터 30번째 항까지만 이용하였다.

제출한 학생의 출석번호를 입력받으면, boolean 배열의 해당 출석번호 항을 true로 변경하였다.

이후 1번째 항부터 30번째 항까지 반복문을 이용하여 false인 항을 찾았고, 조건에 맞게 오름차순으로 출력하였다.

 

코드

BufferedReader 클래스 StringBuilder 클래스를 이용한 코드

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        boolean[] report = new boolean[31];

        for (int i = 0; i < 28; i++) {
            report[Integer.parseInt(br.readLine())] = true;
        }
        for(int i = 1; i <= 30; i++) {
            if(!report[i]) {
                sb.append(i).append("\n");
            }
        }
        System.out.println(sb);
    }
}

 

틀린 부분이 있다면 정정해주시면 감사하겠습니다.
궁금한 부분이 있거나, 다른 아이디어가 있으시면 자유롭게 댓글 남겨주세요!

728x90

+ Recent posts