프로그래머스 43164. 여행경로

2025. 1. 20. 18:02·백준

https://school.programmers.co.kr/learn/courses/30/lessons/43164

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

from collections import defaultdict

def solution(tickets):
    # 경로 그래프 생성
    link = defaultdict(list)
    for ticket in tickets:
        link[ticket[0]].append(ticket[1])
    
    # 각 출발지에서의 도착지들을 사전순 정렬
    for key in link:
        link[key].sort(reverse=True)  # 역순 정렬 (pop() 사용을 위해)
    
    ans = []  # 최종 경로를 저장할 리스트

    def dfs(start):
        while link[start]:  # 출발지에서 갈 수 있는 도착지가 남아 있다면
            next_dest = link[start].pop()  # 가장 사전순 경로 탐색
            dfs(next_dest)  # 다음 도착지로 이동
        ans.append(start)  # 더 이상 갈 곳이 없으면 현재 지점을 경로에 추가
    
    dfs('ICN')  # 시작점은 항상 'ICN'
    return ans[::-1]  # 경로를 역순으로 반환

시간복잡도 면에서 pop(0) 대신 pop()사용을 위해 역순으로 정렬하는 아이디어는 대단하다...

key값을 바로바로 생성해서 집어넣고 싶으면 defaultdict를 꼭 사용하기!

저작자표시 (새창열림)

'백준' 카테고리의 다른 글

백준 1525. 퍼즐  (0) 2025.01.21
백준 7576. 토마토  (0) 2025.01.20
백준 1600. 말이 되고픈 원숭이  (0) 2025.01.20
백준 10814. 나이순 정렬  (0) 2025.01.13
백준 11656. 접미사 배열  (0) 2025.01.13
'백준' 카테고리의 다른 글
  • 백준 1525. 퍼즐
  • 백준 7576. 토마토
  • 백준 1600. 말이 되고픈 원숭이
  • 백준 10814. 나이순 정렬
버그잡는고양이발
버그잡는고양이발
주니어 개발자입니다!
  • 버그잡는고양이발
    지극히평범한개발블로그
    버그잡는고양이발
  • 전체
    오늘
    어제
    • 분류 전체보기 (382)
      • React (16)
      • Next.js (5)
      • Javascript (5)
      • Typescript (4)
      • Node.js (2)
      • Cs (16)
      • 트러블 슈팅 (5)
      • Html (1)
      • Css (3)
      • Django (0)
      • vue (0)
      • Java (2)
      • Python (0)
      • 독서 (1)
      • 기타 (3)
      • 백준 (192)
      • swea (31)
      • 프로그래머스 (30)
      • 이코테 (4)
      • 99클럽 코테 스터디 (30)
      • ssafy (31)
      • IT기사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 태그

    코딩테스트준비
    Til
    99클럽
    개발자취업
    항해99
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
버그잡는고양이발
프로그래머스 43164. 여행경로
상단으로

티스토리툴바