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

수정님의 프로필 이미지
수정

작성한 질문수

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

알고리즘 수업 - 깊이 우선 탐색 1 (백준 24479)

22479번 문제 런타임 에러 도와주세요 ㅠㅠ

해결된 질문

작성

·

343

1

  • 24479번, 강의 사진과 같이 아래 링크처럼 파이썬으로 코딩했는데, 런타임 에러가 나고 있어요 ㅠㅠ 도와주세요 https://www.acmicpc.net/source/70097735

     

  •  

  •  

  • 강의 영상마다 질문이 있으면 언제든 그리고 바로 질문 남겨주세요! 질문할 때 가장 정확하게 이해할 수 있습니다.

  • 해당 영상과 관련된 질문들을 해주실 때 제가 가장 정확히 답변 드릴 수 있습니다!

    • 취업 전반의 상담이나, "제 코드가 왜 틀렸는지 알려주세요"와 같이 광범위한 질문은, 질문자의 상황에 따라 답변이 달라질 수 있기 때문에, 정확한 답변을 드리기가 어렵습니다 :(

  • 이런 분들을 위해서는 멘토링 항목으로 별도 제공하고 있으니, 다음 링크를 참고해주세요!

  • 이 링크를 통해서는 본인의 코드가 왜 틀렸는지 모를 때 질문을 주셔도 좋고, 취업 전반(면접 준비, 자소서, CS 면접 등)에 관련한 질문을 주시면 답변 드리겠습니다 :)

  • "이 질문은 해도 되나?"라는 생각이 드신다면 우선 남겨주세요! 제가 답변 드리기 어려운 건 멘토링에 올려 달라고 재요청 드리겠습니다 :)

답변 1

2

안녕하세요 수정님! 보내주신 링크 들어가봤는데 링크가 안 들어가지네요. 혹시 코드를 여기에 복사해주실 수 있을까요?

수정님의 프로필 이미지
수정
질문자

import sys

sys.setrecursionlimit(10**6)

input = sys.stdin.readline

def dfs(idx):

global visited, graph, answer, order

visited[idx] = True

answer[idx] = order

order += 1

 

for i in graph[idx]:

if not visited[i]:

dfs(i)

 

#0. 입력 및 초기화

N, M, R = map(int, input().split())

MAX = 100000 + 10

graph = [[] for _ in range(N+1)]

visited = [False] * MAX

answer = [0] * MAX

order = 1

 

#1. graph에 연결 정보 채우기

for _ in range(M):

x, y = max(int, input().split())

graph[x].append(y)

graph[y].append(x)

 

#2. 오름차순 정렬

for i in range(1, N+1):

graph[i] = sorted(graph[i])

 

#3. DFS 호출

dfs(R)

 

 

#4. 출력

for i in range(1, N+1):

print(answer[i])

 

 

여기 있습니당!

처음에 map 정보를 입력받기 위해 x,y 를 입력 받을 때 max 함수를 쓰고 있어서 그런 것으로 보입니다.

x, y = max(int, input().split())

아마 의도하신 건 map 이였을 것 같아서 아래처럼 수정하면 잘 통과할 것 같습니다!

x, y = map(int, input().split())

수정님의 프로필 이미지
수정
질문자

알려주셔서 정말 감사합니다 ㅠㅠ 알려주신대로 고쳐서 점수 올랐어용.,.

네 저런 버그 잡기가 진짜 쉽지 않은 것 같아요 ㅎㅎ 잘 복습해보시고 정리해두시면 다음엔 훨씬 빠르게 찾으길 거에요! 오늘도 공부하느라 수고하셨습니다 :)

수정님의 프로필 이미지
수정

작성한 질문수

질문하기