본문 바로가기

백준/C++

[BaeKJoon/C++] 백준5597 c++ 과제 안 내신 분..?

반응형

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

 

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

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

www.acmicpc.net

 

문제

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

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

 

풀이

28개의 입력을 받아서 30개의 번호중 입력을 안한 수를 출력하는 문제다.

접근을 어떻게 할까 생각하다가 입력을 하면 true, 입력을 하지 않으면 false라고 생각을 했다.

참/거짓을 좀 더 명시적으로 표현 할 수 있는 bool타입으로 코드를 작성했다.

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
int main() {
 
    int a;
 
    bool check[31]={0,};        
 
    for(int i=1; i<=28; i++){   
        cin>>a;
        check[a]=1;             
    }                               
 
    for(int j=1; j<=30; j++){
        if(check[j]==0){
            cout<<j<<"\n";
        }
    }
}
cs

풀이2

줄9. 참/거짓을 정수로 표현하면 참=1, 거짓=0으로 해야하기 때문에 모든배열의 값을 0으로 초기화를 해준다.

줄11. 28개의 입력을 받기위한 for문을 만들고 1-28안에 있는 수를 입력했을때 그 배열은 참인 1로 바뀐다.

줄17. 28개의 입력을 다 받고 1로 바뀌지 않는 배열을 찾는 코드이다. = if(check[j]==0)

반응형