ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [3018] 캠프파이어
    BOJ 2021. 12. 3. 15:27

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

     

    3018번: 캠프파이어

    첫째 줄에 MT에 참가한 사람의 수 N이 주어진다. (1 ≤ N ≤ 100) 사람들은 1부터 N까지 번호가 매겨져 있으며, 선영이의 번호는 1이다. 둘째 줄에는 E가 주어진다. (1 ≤ E ≤ 50) 다음 E개 줄에는 그날

    www.acmicpc.net

    <문제>

    입력이 작으므로, 효율성보다는 정확하게 구현하면 된다.

    bool [n][idx]를, n번째 사람이 idx번째 노래를 아는 경우에 true를 갖도록 해주었고

    캠프파이어에 참여한 인원은 vector<int>v에 입력받았다.

    이후에 선영이가 존재하는 경우에는 v를 한번만 순회하며 새로운 노래를 아는 상태로 만들고

    그렇지 않은 경우에는 v를 2중으로 순회하고, 현재까지 아는 노래만큼 추가로 순회하며

    총 3중for로 노래를 공유하는 부분을 구현해주었다.

     

    <소스코드>

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    #include <bits/stdc++.h>
    using namespace std;
    bool chk[101][51];
    int n, e, idx = 1;
    int main(void) {
        cin >> n >> e;
        int i, j;
        for (i = 0; i < e; i++) {
            int k;
            cin >> k;
            vector<int> v;
            bool flag = false;
            for (j = 0; j < k; j++) {
                int x;
                cin >> x;
                if (x == 1) flag = true;
                v.push_back(x);
            }
            if (flag == true) {
                for (auto& i : v) {
                    chk[i][idx] = true;
                }
                idx++;
            } else {
                for (auto& i : v)
                    for (auto& j : v) {
                        for (int X = 1; X < idx; X++) {
                            if (chk[j][X] == true) chk[i][X] = true;
                        }
                    }
            }
        }
        for (i = 1; i <= n; i++) {
            bool flag = true;
            for (j = 1; j < idx; j++) {
                if (chk[i][j] == false) {
                    flag = false;
                    break;
                }
            }
            if (flag == truecout << i << '\n';
        }
        return 0;
    }
    cs

     

    'BOJ' 카테고리의 다른 글

    [21772] 가희의 고구마 먹방  (0) 2021.12.05
    [1459] 걷기  (0) 2021.12.04
    [1100] 하얀 칸  (0) 2021.12.03
    [1072] 게임  (0) 2021.12.02
    [16165] 걸그룹 마스터 준석이  (0) 2021.12.01

    댓글