코딩테스트/SWEA

[Python, 파이썬] SWEA 1219. [S/W 문제해결 기본] 4일차 - 길찾기

알코딩 2024. 11. 10. 13:54

A도시에서 출발하여 B도시로 가는 길이 존재하는지 알아내는 문제.

 

def DFS(i):

    global find

    if(i==99):
        find = True

    for p in graph[i]:
        DFS(p) # 자식으로 이동
        

T = 10 # 테스트케이스의 개수 T

for test_case in range(1, T+1):

    test_case, N = map(int, input().split()) # 테스트케이스 번호, 총 길의 개수
    all_ = list(map(int, input().split())) # 모든 길의 총 집합
    
    graph = [[] for _ in range(100)] # 인접 리스트

    for i in range(N):
        s, e = all_[2*i], all_[2*i+1] # 시작점, 도착점
        graph[s].append(e) # 길 저장

    # 탐색 시작
    find = False
    DFS(0)

    print("#%d %d" % (test_case, find))
 

 

 

[문제풀이]


 

간단한 DFS 문제.

출발점은 0, 도착점은 99다.

 

우선 모든 길을 연결리스트로 저장한다.

for i in range(N):
        s, e = all_[2*i], all_[2*i+1] # 시작점, 도착점
        graph[s].append(e) # 길 저장
 

 

그리고 이 길을 DFS를 돌려 길이 존재하는지 확인하면 끝!

for p in graph[i]:
   DFS(p) # 자식으로 이동
 

저장한 연결리스트를 가지고 출발점에서 도착점으로 점점 이동해 길의 끝에 99, 즉 도착점이 있는지 확인하기만 하면 된다.