728x90
코드
#include <stdio.h>
main() {
int check[30] = { 0, }; //과제 제출한 학생을 체크하는 배열
for (int i = 0; i < 28; i++) { //과제 제출한 학생 체크
int n;
scanf("%d", &n);
check[n - 1] = 1;
}
for (int i = 0; i < 30; i++) //과제 미제출 학생 출석번호 출력
if (check[i] == 0)
printf("%d\n", i + 1);
}
설명
check 배열은 과제를 제출한 학생의 출석번호를 체크하는 배열로, 배열의 모든 값을 0으로 초기화했다.
첫 번째 for문에서는 과제를 제출한 학생의 출석번호를 28개 입력받고, check에서 해당 번호-1 인덱스의 값을 1로 저장한다. 이때 check[n]이 아니라 check[n-1]의 값을 바꾸는 것은 배열의 인덱스가 1부터가 아닌 0부터 시작하는 것을 고려한 것이다.
두 번째 for문에서는 우선 check배열의 0번째부터 29번째까지 비교한다. 값이 0이면 과제를 제출하지 않은 것이므로 i+1을 출력한다. 이는 마찬가지로 배열의 인덱스가 0~29까지이기 때문이다.
728x90
'C & C++ > BOJ' 카테고리의 다른 글
[백준] 1712번: 손익분기점 (0) | 2021.03.12 |
---|---|
[백준] 1037번: 약수 (0) | 2021.03.12 |
[백준] 3046번: R2 (0) | 2021.03.12 |
[백준] 2798번: 블랙잭 (0) | 2021.03.11 |
[백준] 10809번: 알파벳 찾기 (0) | 2021.03.04 |