반응형
문제
X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다.
교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오.
입력
입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다.
출력
출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 2번째 줄에선 그 다음 출석번호를 출력한다.
구상
크기가 31인 배열을 선언하고, 배열의 인덱스 자체를 학생의 출석번호로 활용한다.
1번 학생은 1번 인덱스에, 25번 학생은 25번 인덱스에 저장한다.
0번 인덱스는 의미 없는 값이다.
배열을 0이나 특정한 값으로 초기화하고 1번 인덱스부터 검사하면서 초기값이 그대로 들어 있는 요소만 출력한다.
코드
#include <stdio.h>
int main(void)
{
int student[31] = { 0 };
int presentNum;
for (int i = 0; i < 28; i++) { //출석한 28명의
scanf("%d", &presentNum); //출석 번호를 입력받아
student[presentNum] = presentNum; //해당 인덱스에 저장
}
for (int i = 1; i < 31; i++) { //모든 학생을 조회
if (student[i] == 0) //초기값이 변경되지 않았다면
printf("%d\n", i); //출력
}
return 0;
}
반응형
'프로그래밍 > Baekjoon' 카테고리의 다른 글
[C언어] 백준 1181. 단어 정렬 (0) | 2022.11.01 |
---|---|
[C언어] 백준 1018. 체스판 다시 칠하기 (1) | 2022.10.31 |
[C언어] 백준 2920. 음계 (0) | 2022.10.24 |
[C언어] 백준 1427. 소트인사이드 (0) | 2022.10.22 |
[C언어] 백준 10989. 수 정렬하기 3 (0) | 2022.10.20 |