백준(BAEKJOOB) 5597번 과제 안 내신분...? 문제 c언어

2023. 1. 8. 20:04언어/c, c++

728x90

문제

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

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


입력

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

 


이 문제를 풀때 

조건

1. 1번부터 30번까지 출석번호

2. 28명만 제출 2명 안 낸 친구 번호 구하기

 

 

먼저 값들을 저장하기 위해서 1차원 배열을 만들어 주고

반복문을 만든다. 

 

int a[31] = { 0, };	
	int num;
    
	for (int i = 0; i < 28; i++) {
		scanf("%d", &num);
		a[num] = num;
	}
}

입력을 받으면 바로 그 인덱스에 저장이 되게 하였다.

예를 들면 저기 값에 5를 넣으면 a [5]=5 가 저장되게 끔

총 28개만 

 

 

 

다시 반복문을 한개 더 만들어줘서

	for (int i = 1; i < 31; i++) {
		if (a[i] == 0) {
			printf("%d\n", i);
		}
	}

아까 값을 받지 못한 친구들은 0이 되니깐 

0인 친구의 인덱스를 알 수 있게 된다.

총 코드

#include <stdio.h>

int main() {
	int a[31] = {0,};
	int num;

	for (int i = 0; i < 28; i++) {
		scanf("%d", &num);
		a[num] = num;
	}

	for (int i = 1; i < 31; i++) {
		if (a[i] == 0) {
			printf("%d\n", i);
		}
	}

}

느낀 점 -

이 문제를 난이도가 엄청 쉬운 편이지만

나는 이문제를 어떻게 푸는지 감이 오지 않았다. 문제 유형을 다양하게 한번 풀어 봐야겠다고 생각했다.

728x90