
# 1차 오답 코드 - 틀렸습니다
n = int(input()) # 전체 사람의 수
a, b = map(int, input().split()) # 촌수를 계산해야 하는 두 사람
m = int(input()) # 부모 자식간의 관계 수
graph = [[] * n for _ in range(n + 1)] # 2차원 배열 그래프 선언
visited = [0] * (n + 1) # 방문했는지 확인을 위해
result = []
for i in range(m): # 입력값들 추가
x, y = map(int, input().split())
graph[x].append(y)
graph[y].append(x)
def dfs(start):
result.append(start)
visited[start] = 1
for d in graph[start]:
if visited[d] == 0:
dfs(d)
dfs(a)
if b not in result:
print(-1)
elif b in result:
print(result.index(b))
1차로 제출한 코드였는데 처음에 떠올린 방법은 result에 탐색한 곳들을 전부 append로 넣어주고 b가 안에 없다면 -1을 출력하고 존재한다면 b의 인덱스 값을 출력하려고 코드를 짜봤는데 오답이었다...
-> 아직 이유는 명확하게 모르기 때문에 이유를 아시는 분들은 알려주시면 감사하겠습니다!!
n = int(input()) # 전체 사람의 수
a, b = map(int, input().split()) # 촌수를 계산해야 하는 두 사람
m = int(input()) # 부모 자식간의 관계 수
graph = [[] * n for _ in range(n + 1)] # 2차원 배열 그래프 선언
visited = [0] * (n + 1) # 방문했는지 확인을 위해
result = []
for i in range(m): # 입력값들 추가
x, y = map(int, input().split())
graph[x].append(y)
graph[y].append(x)
def dfs(start, cnt):
cnt += 1
visited[start] = 1
if start == b:
result.append(cnt)
for d in graph[start]:
if visited[d] == 0:
dfs(d, cnt)
dfs(a, 0)
if len(result) == 0:
print(-1)
else:
print(result[0] - 1)
따라서 2차적으로 짜본 코드는 result에 방문한 곳을 추가하는게 아닌 횟수를 +1 해서 자식 번호가 등장했을때 append 해주도록 하고 밖으로 나와서 조건문을 통해 출력을 나눠주었더니 답이 맞았다 !
아직 틀린 답에 대해서 명확하게 오답 풀이를 하지 못해서 주변 사람들이나 구글링을 좀 더 해보면서 헷갈리는 부분은 잡아나가야겠다!
아 그리고 이 문제도 백준 2606번 문제와 비슷한것 같았다 !