백준 5597 - 과제 안 내신 분..?
백준 5597 — bool 배열 인덱스 마킹으로 미제출자 찾기
백준 5597 “과제 안 내신 분..?” 풀이다. 1~30번 중 28명의 번호가 주어질 때, 제출하지 않은 2명의 번호를 오름차순으로 출력한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
bool submitted[31] = {}; // 1~30 인덱스 사용, 0으로 초기화
for (int i = 0; i < 28; i++) {
int x;
cin >> x;
submitted[x] = true;
}
for (int i = 1; i <= 30; i++)
if (!submitted[i])
cout << i << "\n";
return 0;
}
번호를 bool 배열의 인덱스로 직접 써서 제출 여부를 마킹했다. 출력할 때 1부터 30까지 인덱스 순서대로 돌기 때문에 정렬 없이도 오름차순이 보장된다.
핵심 요약 — 값의 범위가 작고 고정이면 값을 배열 인덱스로 직접 쓰는 인덱스 마킹으로 O(1) 조회가 되고, 인덱스 순서 순회만으로 정렬을 대체할 수 있다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.