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을 입력받아서 활용하는 방식을 다뤄봐야겠다!