inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-S

2-s

227

kkim360

작성한 질문수 31

0

선생님 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경로를 탐색을 안하게되는것 아닌가요??

c++ 코딩-테스트

답변 2

0

큰돌

안녕하세요 360님ㅎㅎ

일단은 이런 상황이죠?

image

좋은 생각을 하셨네요 ㅎㅎ

 

이 상황에서는 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 인턴

안녕하세요, 인프런 AI인턴이에요.

kkim360님께서 말씀하신 것과 같은 경우, dfs와 같은 그래프 탐색 알고리즘에서 visited 배열을 활용하지 않는다면 해당 경로를 중복해서 탐색할 가능성이 있습니다. 따라서, visited 배열이 중요한 역할을 하며 방문한 노드를 체크함으로써 중복된 경로를 제외하고 탐색할 수 있도록 도와줍니다.

따라서, 1-3-4-6을 탐색한 후 1-3-5-4-6을 탐색하는 경우 4가 이미 visited로 체크되어 있다면 1-3-5-4-6 경로 탐색을 수행하지 않고, 다른 경로를 탐색할 것입니다. 이와 같이 visited를 활용하면 중복된 경로 탐색을 효율적으로 방지할 수 있습니다.

감사합니다.

0

kkim360

가장많은 컴퓨터를 해킹할 수 있는 경우의 수가 13546이므로 13546을 탐색하지 않으면 안되는것 아니에요?

5-B

0

5

1

4 - A

0

31

2

코딩살구클럽 입장이 안됩니다

0

79

2

4-F 경우의 수 질문입니다.

0

34

2

코딩살구클럽 가입이 안됩니다.

0

81

2

살구 클럽에 대한 질문있습ㄴ디ㅏ

0

61

1

교안 158페이지 문의드립니다

0

46

2

코딩살구클럽 관련 건의사항

0

119

1

코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다

0

45

1

진행 방법 질문드립니다!

0

82

2

2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.

0

64

2

2주차 개념#12 트리 순회

0

33

2

백준사이트가 종료된다고 합니다.

0

318

2

백준 서비스 종료

9

953

1

sk 하이닉스 코테 대비

0

388

2

3-G 최댓값 질문

0

54

1

모듈러 연산 값이 10이 아닌 경우도 있지 않나요?

0

84

2

3-I 코드 질문드립니다.

0

66

2

3-N 질문 있습니다.

0

68

2

학습방법

0

105

2

4-H 질문 있습니다 (코드 리뷰)

0

69

2

코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.

0

186

2

2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.

0

73

2

2주차 개념 #4-2. 인접행렬 질문있습니다.

0

66

2