백준 5597번 [ 과제 안 내신 분..? ]

홍수민·2023년 1월 28일
0

BAEKJOON이다

목록 보기
13/18

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

이것도 어떻게 풀어내야 할지 몰라서 고민을 좀 했다. 아직 컴퓨터적인 사고는 미숙한 것 같다 ㅠㅠㅠ

코드

#include <iostream>
using namespace std;

int main() {
  int stu[31] = {0};

  int n;

  for(int i=1; i<29; i++){
    cin >> n;
    ++stu[n];
  }

  for(int i=1; i<31; i++){
    if(stu[i]==0){
      cout << i << endl;
    }
  }
}

여기서 활용한 방식은 배열 일괄 초기화이다. stu라는 배열을 만들어주고, 안의 값들을 모두 0으로 설정해주었다. 그 다음에 n을 선언했는데, 이 n은 나중에 stu[n]으로 활용이 될 것이다.

for문으로 값을 입력받을 때 주의한 것은 n을 입력받은 것이다. 나는 원래 stu[n]처럼 배열값 전체를 입력받는 코드만을 작성했었다. 그러다보니 이 문제를 해결하기 쉽지 않았던 것이다.

암튼 그래서 n을 입력받은 다음, stu[n]의 값을 +1해주었다. 그러면 결국 입력이 된 값들은 모두 1일 것이고, 과제를 안 낸 친구들은 그대로 0이 된다. 이를 for문과 if문으로 표현해주면 된다.

앞으로도 이 문제처럼 stu[n] 말고 n을 입력받아서 활용하는 방식을 다뤄봐야겠다!

profile
수만이다

0개의 댓글