Inflearn brand logo image

인프런 커뮤니티 질문&답변

mangmang0221님의 프로필 이미지
mangmang0221

작성한 질문수

[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편

백준 13565 침투 질문

해결된 질문

작성

·

40

·

수정됨

1

강의 정말 잘 듣고있습니다. DFS 너무 어려웠는데 저에게 한 줄기 빛 같은 존재십니다..!

 

원본 문제가 바뀐것같기도 한데,

13565번 백준 원본을 보면 M, N 순서대로 입력을 받는 것 같습니다.

 

M이 행에 해당되고, N이 열에 해당이 되어서 전반적으로 반대가 되어야하고,

강의에서 말씀 주신 이 부분도

defdfs(y, x): global visited, map_, answer, N if y == N: answer = Truereturn

y == M

으로 바뀌어야할 것 같은데 맞을까요?

답변 2

0

안녕하세요 mangmang02211119님 :)

좋은 질문 감사합니다! 말씀하신 것처럼, 문제에서 정의된 변수 기준으로 보자면 M이 행 (row), N이 열 (column)이 맞기 때문에, 강의 코드에서 사용한 NM의 역할은 문제 기준과 반대입니다.

즉, 문제 기준에 맞추려면 M → N, N → M으로 바꿔주는 게 맞습니다.

다만, 현재 강의 코드에서는 N을 행 개수로, M을 열 개수로 사용하는 방식으로 일관되게 구현했기 때문에, 변수 이름만 문제와 다를 뿐 실제 동작에는 문제가 없습니다. DFS 탐색 범위나 종료 조건도 이 기준에 맞춰 작성되어 있어서 코드 자체는 정상 작동합니다.

결론적으로,
코드 논리에는 문제가 없지만,
문제 설명과 변수 의미를 맞추려면 MN의 역할을 바꿔주는 게 맞습니다!

제가 이 부분을 틀린지도 모르고 당연히 N, M 이라고 가정하고 작성했네요..!! 정확하게 잡아주셔서 감사합니다 :)

0

안녕하세요, 인프런 AI 인턴입니다.

mangmang0221님, DFS 강의가 도움이 되셨다니 정말 기쁩니다. 😊 말씀하신 백준 13565번 문제는 행렬의 인덱싱 순서 때문에 약간 혼란스러울 수 있습니다.

일반적으로 행렬을 다룰 때는 (행, 열)의 순서로 접근하게 됩니다. 백준 문제에서도 “M이 행을, N이 열을 나타낸다”고 한다면, (M, N) 순서로 주어질 것입니다. 따라서 코드에서 이 점을 유의하여 변환해야 합니다.

  1. DFS 함수에서 y == N 부분에서 ‘목표 행’ 도달 여부를 확인하는 조건문이 있습니다. y가 행을 나타내고, N이 열을 의미한다고 한다면, y == M으로 수정하는 것이 맞습니다.

  2. 처음 입력 받는 부분의 순서를 염두에 두고 코드 전반의 논리를 조정해야 합니다. 특히, 입력 형식에서 문제 요구사항이 ‘M열’과 ‘N행’으로 되어 있다면, 이를 고려하여 초기화를 진행해야 합니다. 따라서, (M, N) 순서로 받을 때 각 배열의 초기화 및 탐색 순서가 올바르게 설정되었는지 확인해 주세요.

다른 사용자가 겪은 비슷한 문제에 대한 논의는 다음에서 확인할 수 있습니다:
- 백준 13565 침투 문제중 질문입니당

코드를 수정하신 후에도 문제가 계속 발생한다면, 혹시 추가적인 에러 메시지나 상황을 공유해 주시면 더 구체적으로 도움 드릴 수 있도록 하겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

mangmang0221님의 프로필 이미지
mangmang0221

작성한 질문수

질문하기