프로그래머스(C++) - 네트워크

2025. 9. 13. 17:26·C++ 프로그래머스 다이어리/BFS , DFS

●문제

 

●입출력

 

문제이해 : 문제를 이해하는데 꽤나걸렸다 이차원 배열 computer의 숫자가 의미하는건

[[1, 1, 0], [1, 1, 0] ,[0, 0, 1]]이 의미하는건 

//1번 컴퓨터는 자기자신, 2번연결 o / 3번연결 x [1, 1, 0]
//2번 컴퓨터는 자기자신, 1번연결 o / 3번연결 x [1, 1, 0]
//3번 컴퓨터는 자기자신, 1번연결 x / 2번연결 x [0, 0, 1] 을 의미한다

 

네트워크의 갯수는 독립적으로 [1,2] 는 네트워크 연결되었음으로 한개

[3] 은 서로 연결안되어있음으로 독립적으로 한개 이렇게 총 두개이다

 

문제풀이 : dfs로 서로 연결되어있거나 방문하지않았을때 dfs 재귀호출을 하였다

#include <string>
#include <vector>
#include <iostream>
using namespace std;

//만약 dfs로 연결되어있다면
//컴퓨터의 갯수 n / 2차원배열 computers / 네트워크 갯수 return

//1번 컴퓨터는 자기자신, 2번연결 o / 3번연결 x [1, 1, 0]
//2번 컴퓨터는 자기자신, 1번연결 o / 3번연결 x [1, 1, 0]
//3번 컴퓨터는 자기자신, 1번연결 x / 2번연결 x [0, 0, 1]
//network갯수는 [1,2] 서로연결 -> answer +1 / [3] 독립적 -> answer +1 답은 2
int answer = 0;
void DFS(int index, vector<vector<int>>& computers, vector<bool> &visited)
{
    visited[index] = true;
    for (int i = 0; i < computers.size(); i++)
    {
        //만약 연결되어있거나 방문하지않았으면 
        if (computers[index][i] == 1 && !visited[i])
        {
            //재귀호출
            DFS(i, computers, visited);
        }
    }
}
int solution(int n, vector<vector<int>> computers) 
{
    vector<bool>visited(n, false);
    for (int i = 0; i < n; i++)
    {
        //방문안했으면 체크
        if (!visited[i])
        {
            DFS(i, computers, visited);
            answer++;
        }
    }
    return answer;
}
int main(void)
{
    int n = 3;
    vector<vector<int>> computers = { {1, 1, 0}, {1, 1, 0}, {0, 0, 1} };
    int result = solution(n, computers);
    cout << result;
}

 

레벨 : 3

점수 : 1

 

-----

dfs 어렵네요.. 공부부족이 많이 느껴집니다

'C++ 프로그래머스 다이어리 > BFS , DFS' 카테고리의 다른 글

프로그래머스(C++) - 여행경로  (0) 2025.10.05
프로그래머스(C++) - 단어 변환  (0) 2025.09.23
프로그래머스(C++) - 게임 맵 최단거리  (0) 2025.09.14
프로그래머스(C++) - 타겟 넘버  (0) 2025.09.13
Algorithm - BFS, DFS  (0) 2025.09.12
'C++ 프로그래머스 다이어리/BFS , DFS' 카테고리의 다른 글
  • 프로그래머스(C++) - 단어 변환
  • 프로그래머스(C++) - 게임 맵 최단거리
  • 프로그래머스(C++) - 타겟 넘버
  • Algorithm - BFS, DFS
lucodev
lucodev
커피와 노트북 그리고 개발
  • lucodev
    루코 개발테이블
    lucodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (171) N
      • Unreal5 프로젝트 다이어리 (73)
      • Unreal5 프로젝트 다이어리2 (11)
      • Unreal 팁 (8)
      • Unreal 디버깅 (8)
      • 코드 개인보관함 (8)
      • C++ 프로그래머스 다이어리 (49) N
        • Stack,Queue (6)
        • Hash (4)
        • Heap (2)
        • Sort (5)
        • Exhaustive search (5)
        • Greedy (2)
        • BFS , DFS (6)
        • Graph (2)
        • Dynamic Programming (1)
        • C++ Math (2)
        • 기타 문제 (13) N
      • 코딩테스트+@ (10) N
      • 알고리즘 스타디 (1)
      • 알고리즘 스타디 과제 (3)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 링크

  • 공지사항

  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 태그

    언리얼
    언리얼 foot step
    unreal loading
    언리얼 motionmatching
    unreal look at
    언리얼 behaviortree
    unreal 모션매칭
    언리얼 모션매칭
    unreal 로딩
    unreal 시퀀스
    언리얼 시퀀스
    언리얼 비헤이비어트리
    언리얼 페이드 아웃
    unreal sequence
    언리얼 look at
    언리얼 behavior tree
    언리얼 컷씬
    언리얼 로딩창
    언리얼 로딩
    unreal 컷씬
  • hELLO· Designed By정상우.v4.10.3
lucodev
프로그래머스(C++) - 네트워크
상단으로

티스토리툴바