안경잡이 구루루

백준 5597 (과제 안 내신 분..?) [C programming] [Implemention/구현] 본문

카테고리 없음

백준 5597 (과제 안 내신 분..?) [C programming] [Implemention/구현]

구루루(gururu) 2023. 11. 15. 23:08
반응형

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

 

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

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

www.acmicpc.net

 


나:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	int i, j, atd[30]={0,};
	int num;
	for (i = 0; i < 28; i++) {
		scanf("%d", &num);
		atd[num - 1] = 1;
	}
	for (j = 0; j < 30; j++) {
		if (atd[j] == 0) printf("%d\n", j+1);
	}
	return 0;
}

완성된 코드는 위와 같다. 

우선 VS scanf() 오류를 막기위해 #define CRT_SECURE_NO_WARNINGS 를 선언

(1)
int i, j, atd[30]={0,};
int num;

(2)
for (i = 0; i < 28; i++) {
    scanf("%d", &num);
    atd[num - 1] = 1;
}

(3)
for (j = 0; j < 30; j++) {
    if (atd[j] == 0) printf("%d\n", j+1);
}

(1)  반복문에 사용될 i, j 변수를 선언해준다. 그리고 출석인원 30명을 나타낼 atd[30] 배열을 선언하고 출석 여부를 확인하기 위해 모든 배열에 0 값을 넣는다.

그리고 출석번호를 나타내는 변수 num을 선언

(2) 첫 번째 반복문에서 28번 반복을 통해 출석번호 num을 입력받고 그 번호에 해당하는 배열값을 1로 바꿔 출석상태로 만들어준다.

이때 배열은 0부터 배열개수-1 까지 사용되기 때문에 atd[num -1]을 사용

(3) 두 번째 반복문에서 모든 atd 배열이 결석인 0인지 출석한 1인지 if 구문을 이용해 검사하고 만약 배열의 값이 0(결석) 이면 그 배열+1 인 출석번호를 출력시킨다.

반응형