[λ°±μ€€/C++] 1043번 거짓말

2022. 7. 26. 19:05Β·PS/C++
728x90
λ°˜μ‘ν˜•

λ°±μ€€

 


πŸ€”λ¬Έμ œ 이해

진싀을 μ•Œκ³  μžˆλŠ” μ‚¬λžŒλ“€μ΄ νŒŒν‹°μ— μ°Έμ„ν•˜λŠ” 경우 κ·Έ νŒŒν‹°μ—μ„  μ§„μ‹€λ§Œ λ§ν•΄μ•Όν•˜κ³ , μˆœμ„œ 상관없이 진싀을 ν•œλ²ˆμ΄λΌλ„ λ“£κ²Œ λ˜λŠ” μ‚¬λžŒλ“€μ΄ μ°Έμ„ν•˜λŠ” νŒŒν‹°λŠ” μ§„μ‹€λ§Œ 말해야 ν•  λ•Œ κ³Όμž₯된 이야기λ₯Ό ν•  수 μžˆλŠ” νŒŒν‹°μ˜ 개수λ₯Ό κ΅¬ν•˜λ©΄ λ˜λŠ” λ¬Έμ œμ΄λ‹€.


πŸ’‘μ²«λ²ˆμ§Έ 아이디어

진싀을 μ•„λŠ” μ‚¬λžŒμ΄ ν¬ν•¨λœ νŒŒν‹°μ— κ°„ μ‚¬λžŒλ“€μ„ λͺ¨λ‘ 진싀을 μ•Œκ³  μžˆλ‹€κ³  μ²˜λ¦¬ν•΄μ£Όκ³  이 과정을 λ°˜λ³΅ν•˜λ©΄ μ§„μ‹€λ‘œ 말해야 ν•˜λŠ” νŒŒν‹°μ™€ κ³Όμž₯ν•΄μ„œ 말해도 λ˜λŠ” νŒŒν‹°λ₯Ό ꡬ뢄해쀄 수 μžˆλ‹€κ³  μƒκ°ν–ˆλ‹€.

 

πŸ”₯풀이πŸ”₯

know[i] : i번 μ‚¬λžŒμ΄ 진싀을 μ•Œλ©΄ true, λͺ¨λ₯΄λ©΄ false

party_know[i] : i번 νŒŒν‹°κ°€ 진싀을 말해야 ν•˜λŠ” νŒŒν‹°λ©΄ true, κ³Όμž₯ν•΄μ„œ 말해도 λ˜λŠ” νŒŒν‹°λ©΄ false

party[i][j] : i번째 νŒŒν‹°μ— μ°Έμ„ν•œ μ‚¬λžŒλ“€μ˜ 번호λ₯Ό μ €μž₯

 

처음 진싀을 μ•Œκ³  μžˆλŠ” μ‚¬λžŒλ“€μ΄ μ°Έμ—¬ν•˜λŠ” νŒŒν‹°λ₯Ό true둜 λ°”κΏ”μ€€λ‹€.

진싀을 말해야 ν•˜λŠ” νŒŒν‹°μ—μ„œ 진싀을 λͺ¨λ₯΄λŠ” μ‚¬λžŒλ“€μ„ 진싀을 μ•Œκ³  μžˆλ‹€κ³  μ²˜λ¦¬ν•΄μ£Όκ³ , 진싀을 μ•Œκ²Œλœ μ‚¬λžŒλ“€μ΄ ν¬ν•¨λœ νŒŒν‹°λ“€μ„ 진싀을 말해야 ν•˜λŠ” νŒŒν‹°λ‘œ μ²˜λ¦¬ν•΄μ€€λ‹€.

μƒˆλ‘­κ²Œ 진싀을 μ•Œκ²Œλ˜λŠ” μ‚¬λžŒμ΄ 생기지 μ•Šμ„ λ•ŒκΉŒμ§€ μœ„ 과정을 λ°˜λ³΅ν•΄μ£Όκ³  party_know의 값이 false인 κ²ƒμ˜ 개수λ₯Ό μ„Έμ„œ 좜λ ₯ν•΄μ€€λ‹€.


#include <iostream>
#include <vector>

using namespace std;

int n, m;
vector<vector<int>> party;
bool party_know[52];
bool know[52];

bool solve() {
    int flag = 0;
    for (int i = 0; i < m; i++) {
        if (party_know[i]) {
            for (int x: party[i]) {
                if (know[x]) continue;
                know[x] = true;
                flag = 1;
            }
        }
    }

    for (int i = 0; i < m; i++) {
        if (party_know[i]) continue;
        for (int x: party[i]) {
            if (know[x]) {
                party_know[i] = true;
            }
        }
    }
    return flag;
}

int main() {
    cin.tie(nullptr);
    cout.tie(nullptr);
    ios::sync_with_stdio(false);

    cin >> n >> m;
    party.resize(m + 2);

    int a, b;
    cin >> a;
    for (int i = 0; i < a; i++) {
        cin >> b;
        know[b] = true;
    }

    for (int i = 0; i < m; i++) {
        cin >> a;
        for (int j = 0; j < a; j++) {
            cin >> b;
            party[i].push_back(b);
            if (know[b]) {
                party_know[i] = true;
            }
        }
    }
    int flag = 0;
    for (int i = 0; i < m; i++) {
        if (party_know[i]) {
            for (int x: party[i]) {
                know[x] = true;
                flag = 1;
            }
        }
    }

    for (int i = 0; i < m; i++) {
        if (party_know[i]) continue;
        for (int x: party[i]) {
            if (know[x]) {
                party_know[i] = true;
                flag = 1;
            }
        }
    }
    while (flag) {
        flag = solve();
    }

    int cnt = 0;
    for (int i = 0; i < m; i++) {
        if (!party_know[i])cnt++;
    }
    cout << cnt;
}
728x90
λ°˜μ‘ν˜•

'PS > C++' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[λ°±μ€€/C++] 16457번 λ‹¨ν’μžŽ 이야기  (0) 2022.08.12
[λ°±μ€€/C++] 2239번 μŠ€λ„μΏ   (0) 2022.08.11
[λ°±μ€€/C++] 17143번 λ‚šμ‹œμ™•  (0) 2022.07.26
[λ°±μ€€/C++] 1766번 λ¬Έμ œμ§‘  (0) 2022.07.21
[λ°±μ€€/C++] 13398번 연속합 2  (0) 2022.07.20
'PS/C++' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [λ°±μ€€/C++] 16457번 λ‹¨ν’μžŽ 이야기
  • [λ°±μ€€/C++] 2239번 μŠ€λ„μΏ 
  • [λ°±μ€€/C++] 17143번 λ‚šμ‹œμ™•
  • [λ°±μ€€/C++] 1766번 λ¬Έμ œμ§‘
yulee_to
yulee_to
  • yulee_to
    yulee
    yulee_to
  • 전체
    였늘
    μ–΄μ œ
    • 전체 κΈ€ (170)
      • CS (2)
        • OS (0)
        • DB (0)
        • Network (2)
      • Develop (1)
        • Spring (9)
        • Java (12)
        • Python (0)
        • Algorithm (0)
        • 기타 (0)
      • PS (39)
        • C++ (39)
        • Java (0)
      • TIL (61)
      • Book (39)
        • μžλ°”μ˜ μ‹  (32)
        • μŠ€ν”„λ§ μž…λ¬Έμ„ μœ„ν•œ μžλ°” 객체 μ§€ν–₯의 원리와 이해 (7)
      • ETC (4)
        • Blog (3)
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • νƒœκ·Έ
    • λ°©λͺ…둝
  • 링크

  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    boj
    GodOfJava
    μ•Œκ³ λ¦¬μ¦˜
    μžλ°”
    객체지ν–₯
    Java
    μžλ°”μ˜ μ‹ 
    λ©€ν‹°μΊ νΌμŠ€itλΆ€νŠΈμΊ ν”„
    TiL
    μ—μŠ€λ„·μ‹œμŠ€ν…œ
    1일1λ°±μ€€
    aws
    λ°±μ€€
    EC2
    μ—μŠ€λ„·μ‹œμŠ€ν…œ λΆ€νŠΈμΊ ν”„
    ν΄λΌμš°λ“œ ν™œμš© λ„€νŠΈμ›Œν¬ μ—”μ§€λ‹ˆμ–΄ λΆ€νŠΈμΊ ν”„
    μŠ€ν„°λ””
    λΆ€νŠΈμΊ ν”„ν›„κΈ°
    C++
    μŠ€ν”„λ§ μž…λ¬Έ
  • 졜근 λŒ“κΈ€

  • 250x250
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
yulee_to
[λ°±μ€€/C++] 1043번 거짓말
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”