1seul357

[Programmers] 여행경로 본문

알고리즘/프로그래머스

[Programmers] 여행경로

1seul 2021. 12. 7. 10:42
answer = []
def dfs(isvisited, now, route, cnt, li):
    if cnt == len(route):   # 모든 경로를 탐색했으면
        answer.append(li)   # answer에 추가
        return
    for i in range(len(route)):
        # 아직 방문 안했고, 다음 공항으로 이동할 수 있다면
        if isvisited[i] == 0 and now == route[i][0]:  
            isvisited[i] = 1   # 방문 체크
            dfs(isvisited, route[i][1], route, cnt+1, li+[route[i][1]])  # dfs 탐색
            isvisited[i] = 0   # 다시 0으로


def solution(tickets):
    tickets.sort()    # 알파벳 순으로 방문하기 위해 정렬
    visited = [0]*len(tickets)  # 방문체크 리스트

    for i in range(len(tickets)):
        for j in range(len(tickets)):
            # 출발점 찾기
            if tickets[i][0] == "ICN":   # ICN이라면
                visited[i] = 1   # 방문 체크
                dfs(visited, tickets[i][1], tickets, 1, ["ICN"]+[tickets[i][1]])
                visited[i] = 0  # 모든 도시를 방문할 수 있는 출발점이 아닐 수 있으므로 다시 0으로
                if len(answer) >= 1:
                    break
                    
    return answer[:][0]

 

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[Programmers] 할인 행사  (0) 2023.07.01
[Programmers] 괄호 회전하기  (0) 2023.06.10
[Programmers] 귤 고르기  (0) 2023.06.04
[Programmers] 숫자 문자열과 영단어  (1) 2022.08.26