#38. 백준 번 문제 풀이: 과제 안 내신 분..? | 문제 원본 보기 |
--입력-- 3 1 4 5 7 9 6 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 --출력-- 2 8
학생수에 해당하는 배열을 만들어 초기값 0으로 주고, 출석한 학생번호에 해당하는 배열값을 1로 변경한다. 배열에서 값이 0인 인덱스 번호를 출력하면 된다. 배열의 인덱스 번호를 출석번호로 간주하는 것이 중요한 핵심이다. -- 배열[31] = 0으로 초기화 #1~30까지 배열 인덱스를 사용할 것이므로 31개를 선언. 루프 28번 배열[출석번호] = 1 루프 28번 if 배열[i] == 0: 미제출 학생번호 출력 --
#include <stdio.h>
int main() {
int i, v;
int ns[31] = {0}; // 31개의 0값을 가진 배열을 생성
// 배열 인덱스 번호를 학생번호로 사용. 0은 사용하지 않고 1부터 사용.
for(i = 0; i < 28; i++) { // 28명 만큼 루프
scanf("%d", &v); // 수열을 하나씩 입력받는다.
ns[v] = 1; // 과제를 낸 학생번호에 해당하는 인덱스 배열에 1을 대입
}
// 배열에서 값이 0인 인덱스가 과제를 내지 않은 학생번호 > 출력
for(i = 1; i < 31; i++) { // 1~30까지 인덱스값 확인
if(ns[i] == 0) printf("%d\n", i); // 과제를 내지 않은 학생번호 출력
}
return 0;
}