2-s
230
작성한 질문수 31
선생님 2s 문제에 입력이
65
31
43
64
53
45
라고 들어올경우. 한번에 가장 많은 컴퓨터를 해킹할 수 있는 컴퓨터의 번호는 1-3-5-4-6으로 5가지 입니다.
이때 만약 선생님이 쓰신 코드처럼 dfs에 visited를 설정한다면 1-3-4-6을 탐색한후 1-3-5-4-6을 탐색하려면 4가 이미 visited로 겹치기에 1-3-5-4-6경로를 탐색을 안하게되는것 아닌가요??
답변 2
0
안녕하세요 360님ㅎㅎ
일단은 이런 상황이죠?

좋은 생각을 하셨네요 ㅎㅎ
이 상황에서는 1번노드부터 탐색하면 가장 많은 노드들을 탐색하는 것을 알 수 있습니다.
제 코드를 실행해보면 1번노드라고 나오며
for (int i = 1; i <= n; i++) {
memset(visited, 0, sizeof(visited));
dp[i] = dfs(i);
cout << dp[i] << '\n';
mx = max(dp[i], mx);
} 아래의 dp를 찍어봐도 5라고 나옵니다. 1, 3, 4, 5, 6, 다 탐색을 한 것이죠.
1-3-4-6을 탐색한후 1-3-5-4-6을 탐색하려면 4가 이미 visited로 겹치기에 1-3-5-4-6경로를 탐색을 안하게되는것 아닌가요??
>> 네 그럴수도 있죠. 다만, 1, 3, 4, 6 을 탐색한 이후에 3에서 5를 탐색해서 결국 1, 3, 4, 6, 5 전부 탐색하는 것은 자명하죠? (인접해있는 노드를 다 탐색하니까요) 이 문제는 어떤 순서로 경로를 탐색하는게 중요한게 아니라 1번노드부터 시작해서 해킹할 수 있는 컴퓨터를 모두 탐색하는게 중요하기 때문에 해당 부분은 상관이 없습니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제가 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI인턴이에요.
kkim360님께서 말씀하신 것과 같은 경우, dfs와 같은 그래프 탐색 알고리즘에서 visited 배열을 활용하지 않는다면 해당 경로를 중복해서 탐색할 가능성이 있습니다. 따라서, visited 배열이 중요한 역할을 하며 방문한 노드를 체크함으로써 중복된 경로를 제외하고 탐색할 수 있도록 도와줍니다.
따라서, 1-3-4-6을 탐색한 후 1-3-5-4-6을 탐색하는 경우 4가 이미 visited로 체크되어 있다면 1-3-5-4-6 경로 탐색을 수행하지 않고, 다른 경로를 탐색할 것입니다. 이와 같이 visited를 활용하면 중복된 경로 탐색을 효율적으로 방지할 수 있습니다.
감사합니다.
코딩 살구 클럽 컴파일 에러
0
4
1
추천 문제
0
7
1
코딩살구클럽 승인
0
9
1
코살구 1주차 1940번 문제 조건과 프라이빗 테스트 불일치 문의
0
21
2
문제를 고민하는 시간 관련
0
26
2
코딩살구클럽
0
38
2
코딩살구클럽 문의
0
37
2
코딩살구클럽 승인
0
35
2
DP 경우의 수 설명이 이해가 되지 않습니다.
0
33
2
3-F 채점 관련 질문
0
31
1
BFS, DFS 활용이 되는 상황에서의 방향성
0
33
2
코딩살구클럽 승인
0
45
2
코딩살구클럽승인
0
39
3
코딩살구클럽 승인
0
54
2
3-D 관련 질문
0
35
2
코살구 회원가입 문의
0
45
2
코살구 로그인 문제
0
65
2
3-A 문제 풀이 관련 질문
0
56
3
2-O 질문 있습니다
0
38
2
2-T 문제에 관한 질문
0
40
2
코딩 살구 클럽 접속 및 사용방법 문의
0
63
2
안녕하세요~. 현재 코살코딩클럽 사이트가 접속이 안됩니다~
0
67
2
코딩살구클럽 로그인문제
0
85
3
코딩 살구 클럽 로그인 문제
0
86
2





