• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

코딩 내용 질문입니다.

21.07.07 17:39 작성 조회수 110

0

6x6배열을 이용해서 그래프를 작성할때, public void DFS 함수에 for 문안에 

if (adj[now, next]==0)

        continue; 있는데 이때 now노드와 그다음 next가 연결되어 있지 않아서 스킵하기 위해 작성한것은 이해가 갑니다. 하지만 왜 이렇게 코드를 작성했는지 이해가 가질 않습니다. 왜

adj[now, next]==0이되면 만나지가 않는거죠? 너무 어렵네요....... 

답변 1

답변을 작성해보세요.

5

코드랑 그림이랑 병행해서 같이 살펴보시면 도움이 됩니다.

위 그림에서 빨간색 선으로 연결되어 있으면 두 정점이 연결되어 있는 상태고,
선이 없으면 끊긴 상태입니다.
즉 위 그림에서 3-4는 연결되어 있지만, 3-5는 연결되어 있지 않죠.
이를 그래프로 표현하는 방법은 여러가지가 있지만,
현재는 인접 행렬로 표현하고 있기 때문에 adj[a,b]가 1이면 a<->b가 연결되어 있는 것입니다.
따라서 adj[3,4]는 1인 상태이고 adj[3,5]는 0인 상태입니다.

위 코드를 이해하는 핵심은 '재귀함수'를 얼마나 잘 이해하고 있느냐입니다.
그림을 그려보고 디버깅을 해보면서 찬찬히 고민해보시기 바랍니다.
그리고 그래프 관련 내용은 원래 어려운게 맞습니다.
실제 학원 출신 게임 현업자들도 10명중 9명은 모르는 내용이니
너무 어렵다고 스트레스 받으실 필요는 없습니다.
그리고 자료구조/알고리즘 파트는 C# 문법 강의처럼 한번 훑어보고 쭉 넘어가는 것이 아닙니다.
이 때부터는 20분 강의를 이해하는데 하루 종일 걸릴 수도 있고,
그게 특별히 이상하지도 않을 정도로
누구나 시작할 때 포인터와 자료구조에서 한 번 벽을 느끼게 됩니다.
(저도 물론 그랬었죠 ㅎㅎㅎ)