백준 5597 : 과제 안 내신 분..?

황유빈·2024년 6월 23일

문제

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

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

입력

입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다.

출력

출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 2번째 줄에선 그 다음 출석번호를 출력한다.

풀이

이 문제는 간단하다. 우선 30명의 학생들이 담겨있는 배열을 0으로 초기화 하여 두고 이후 반복문을 사용하여 28명의 학생들의 번호를 배열의 index 번호와 학생의 번호의 맞도록 저장한다.
ex) for(int i = 0; i<28;i++){
scanf("%d",&clear);
student[clear] = clear;
}
이후 다시 반복문을 사용하여 학생들이 담겨있는 배열을 1에서 30번까지 확인하고 만약 index가 0인 경우 출력, 즉 2번째 index가 0 이고 이후 출력을 i로 두면 2가 출력이 나온다.

#include <stdio.h>
int main() {
	int student[31]={0};
    int clear;
    for(int i = 0; i<28;i++){
    	scanf("%d",&clear);
        student[clear] = clear;
    }
    for(int i=1;i<31;i++){
    	if(student[i]==0){
        	printf("%d\n",i);
        }
    }
    return 0;
}
profile
초보개발자

0개의 댓글