[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][C++] ๋„คํŠธ์›Œํฌ

2024. 6. 4. 09:00ยท๐Ÿ’ญ Problem Solving/C++

๋ฌธ์ œ

https://school.programmers.co.kr/learn/courses/30/lessons/43162

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

ํ’€์ด

๐Ÿ’ก ๋ฌธ์ œ ์ ‘๊ทผ

  • ํ•œ ์ปดํ“จํ„ฐ์™€ ์—ฐ๊ฒฐ๋œ ๋‹ค์Œ ์ปดํ“จํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ , ๊ทธ ๋‹ค์Œ ์ปดํ“จํ„ฐ์™€ ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ๋ฅผ ๊ณ„์†ํ•ด์„œ ํƒ์ƒ‰ํ•ด ๋‚˜๊ฐ„๋‹ค.
  • ํƒ์ƒ‰ ์ค‘ ์—ฐ๊ฒฐ์ด ๋Š๊ธฐ๋ฉด ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ๊ฐ€ ์™„์„ฑ๋œ ๊ฒƒ = ๋„คํŠธ์›Œํฌ + 1

๐Ÿ’ก DFS, ์žฌ๊ท€ํ•จ์ˆ˜

  1. 1๋ฒˆ ์ปดํ“จํ„ฐ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ปดํ“จํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด dfs ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  2. 1๋ฒˆ ์ปดํ“จํ„ฐ๊ฐ€ 2๋ฒˆ ์ปดํ“จํ„ฐ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•œ๋‹ค.
  3. 2๋ฒˆ ์ปดํ“จํ„ฐ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ปดํ“จํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด dfs ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
    ์ด๋•Œ, 2๋ฒˆ ์ปดํ“จํ„ฐ์™€ 1๋ฒˆ ์ปดํ“จํ„ฐ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ, 1๋ฒˆ์งธ ์ปดํ“จํ„ฐ๋Š” ์ด๋ฏธ ํƒ์ƒ‰ํ•œ ์ปดํ“จํ„ฐ์ด๋‹ค.

์ด ๊ณผ์ •์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ i๋ฒˆ์งธ ์ปดํ“จํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด dfs ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  2. i๋ฒˆ์งธ ์ปดํ“จํ„ฐ์™€ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ์ปดํ“จํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด dfs ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
    ์ด๋•Œ, ํƒ์ƒ‰ํ•˜๋Š” ์ปดํ“จํ„ฐ๋Š” ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ปดํ“จํ„ฐ์ด๋‹ค.
  3. dfs ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋”์ด์ƒ ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋„คํŠธ์›Œํฌ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

์ฝ”๋“œ

#include <iostream>
#include <vector>

using namespace std;

vector<bool> isVisited;

void dfs(int cur, int n, vector<vector<int>> computers) {
    isVisited[cur] = true;  // ๋ฐฉ๋ฌธ ํ‘œ๊ธฐ

    for (int i = 0; i < n; i++) {
        // ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ปดํ“จํ„ฐ์ด๊ณ , ํ˜„์žฌ ์ปดํ“จํ„ฐ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๋ฉด
        if (!isVisited[i] && computers[cur][i]) {
            dfs(i, n, computers);
        }
    }
}

int solution(int n, vector<vector<int>> computers) {
    int answer = 0;
    isVisited.assign(n, false);

    for (int i = 0; i < n; i++) { // ์ปดํ“จํ„ฐ ๋ฐฉ๋ฌธ
        if (!isVisited[i]) { // ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ปดํ“จํ„ฐ
            dfs(i, n, computers);
            answer++;
        }
    }

    return answer;
}

'๐Ÿ’ญ Problem Solving > C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[SWEA][C++] 1289. ์›์žฌ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ณต๊ตฌํ•˜๊ธฐ  (0) 2024.10.16
[BOJ][C++] ๋ฐฑ์ค€ 2002๋ฒˆ: ์ถ”์›”  (0) 2024.06.14
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][C++] ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ  (0) 2024.06.02
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][C++] ํƒ€๊ฒŸ ๋„˜๋ฒ„  (0) 2024.05.31
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][C++] ์Šคํ‚ฌํŠธ๋ฆฌ  (0) 2024.05.31
'๐Ÿ’ญ Problem Solving/C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [SWEA][C++] 1289. ์›์žฌ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ณต๊ตฌํ•˜๊ธฐ
  • [BOJ][C++] ๋ฐฑ์ค€ 2002๋ฒˆ: ์ถ”์›”
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][C++] ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][C++] ํƒ€๊ฒŸ ๋„˜๋ฒ„
0=2.
0=2.
  • 0=2.
    0=2
    0=2.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (104)
      • ๐Ÿ“‚ Project (2)
        • Paint the City (2)
      • ๐Ÿ’ญ Problem Solving (42)
        • C++ (28)
        • Java (14)
      • ๐Ÿ“ Study (17)
        • React (1)
        • Java (16)
      • ๐Ÿ’ป CS (11)
        • ๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ (2)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (9)
      • ๐Ÿƒ‍โ™€๏ธ Activities (32)
        • Web Front-End Basic Study (6)
        • 42 Cursus (26)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ๊ธ€์“ฐ๊ธฐ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    CSS
    .h
    HTML
    dynamic programming
    La Piscine
    ๊ตฌํ˜„
    react
    dfs
    knapsack
    java
    ๋ฐฑํŠธ๋ž˜ํ‚น
    BFS
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    github
    swea
    makefile
    ํŠธ๋ฆฌ
    unity
    ์ •๋ ฌ
    CS
    ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ๋ฐฑ์ค€
    git
    C
    42๊ฒฝ์‚ฐ
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ
    VR
    ๋งต
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
0=2.
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][C++] ๋„คํŠธ์›Œํฌ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”