포스트

백준 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 라이센스를 따릅니다.