skfnxh0124   6년 전

map : 2차원 배열에 (i,j)==1은 i>j를 의미합니다.

check : 말 그대로 탐색을 했는지.

각 구슬마다 자신보다 큰 것의 개수, 작은 것의 개수를 찾을려고 dfs로 구현을 했습니다.

그래서 큰 것이나 작은 것이 (전체구슬+1)/2 보다 크거나 같다면 중앙이 아닐 것이라고 판단했습니다.

제가 몇가지 테스트 케이스 만들어서 했는데도 틀린 것이 없는데 ..어디서틀렸을까요 .

chogahui05   6년 전

생각해 보니..

추를 기준으로 dfs를 돌릴 때. Tree라는 보장이 없기 때문에 (Tree 같은 경우 노드 갯수 - 1 = 간선 갯수를 만족합니다.)

dfs를 돌리고 난 후에 초기화를 시켜줘야 하는데 그게 아니니

잘못된 값이 나올 수 밖에 없는 거 같네요. 그래프를 구축하는 건 맞습니다.

skfnxh0124   6년 전

chogahui05님

답변 남겨주셔서 감사합니다.

그런데 dfs를 돌리고 난 후에 초기화를 한다는 게 어떤 의미인지 모르겠습니다 ㅠㅠ

46~48번 줄이 check함수 초기화 부분인데 다른 곳을 초기화 해야할까요 ???

chogahui05   6년 전

dfs를 하실 때 check (혹은 visit) 배열에다가 방문했으면 1을 쓰고, 아니면 0이잖아요.

그걸 초기화 하자는 겁니다.

예를 들어서

1 ---> 3

-     ㅅ

   -    |

    ->  2

이런 식으로 연결이 되어 있다고 치면. 1에서는 3개를 갈 수 있겠지만, 2에서는 2개, 3에서는 1개만 갈 수 있지요.

skfnxh0124   6년 전

글이 중간에 꺠졌네요 ㅠㅠ.....

슬랙에 다이렉트 메세지로 질문 드렸습니다만

dfs를 할 때 check로 방문했던 것을 확인하는데 방문을 하지 않았다면 그 다음노드로 들어가면서 정보를 circle에 저장합니다.

그 후 방문한다면 circle에 정보를 가져와서 반환하는 식으로 구현을 했습니다.

chogahui05님 께서 말씀해주신거 곱씹어 봐도 어느부분이 틀린지를 잘 모르겠습니다.. 

댓글을 작성하려면 로그인해야 합니다.