[2021 KAKAO BLIND RECRUITMENT] 합승 택시 요금

2021. 5. 8. 01:18·알고리즘 문제풀이

programmers.co.kr/learn/courses/30/lessons/72413

 

코딩테스트 연습 - 합승 택시 요금

6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4

programmers.co.kr

import heapq

INF = 987654321

def f(graph,s,n):
    dist = [INF]*(n+1)
    pq = [[0,s]]

    while pq:
        w,v = heapq.heappop(pq)

        if dist[v] != INF:
            continue
        
        dist[v] = w

        for nv,nw in graph[v]:
            if dist[nv] != INF:
                continue
            heapq.heappush(pq,[w+nw,nv])
    
    return dist

def solution(n, s, a, b, fares):
    graph = [[] for i in range(n+1)]
    
    for fare in fares:
        start,end,w = fare
        graph[start].append([end,w])
        graph[end].append([start,w])

    dist_s = f(graph,s,n)
    dist_a = f(graph,a,n)
    dist_b = f(graph,b,n)

    answer = 987654321
    for i in range(1,n+1):
        answer = min(answer,dist_s[i]+dist_a[i]+dist_b[i])

    return answer

풀이

A->i , S->i, B->i 의 합이 최소인 i 지점을 찾는 문제이다.

 

즉 S,A,B 를 시작점으로 하는 다익스트라를 3번하여 dist 목록을 구한다.

dist에는 출발지점에서 각 지점까지의 최단거리가 적혀있다.

 

dist의 인덱스 합을 통해  최단거리의 합의 최솟값을 구한다.

 

시간복잡도

다익스트라를 3번 사용했다 3* E*log(N) 이므로 O(E*log(N)) 이다.

'알고리즘 문제풀이' 카테고리의 다른 글

[백준 15954] 인형들  (0) 2021.05.11
[백준 1188] 음식 평론가  (0) 2021.05.11
[2018 KAKAO BLIND RECRUITMENT] 셔틀버스  (0) 2021.05.08
[백준 17218] ⚾  (0) 2021.05.07
[백준 1013] Contact  (0) 2021.05.07
'알고리즘 문제풀이' 카테고리의 다른 글
  • [백준 15954] 인형들
  • [백준 1188] 음식 평론가
  • [2018 KAKAO BLIND RECRUITMENT] 셔틀버스
  • [백준 17218] ⚾
WildDevmon
WildDevmon
『앗! 야생의 개발몬(이)가 나타났다!』
  • WildDevmon
    야생의 개발몬
    WildDevmon
  • 전체
    오늘
    어제
    • 분류 전체보기 (35)
      • Server (5)
      • 알고리즘 문제풀이 (27)
      • 회고 (3)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    커널 스레드 상태
    네카라쿠배 취업
    graceful shutdown
    카카오 필요스펙
    ai개발자
    백준 17281
    백준 인형들
    선발 명단
    백준 5347
    백준 1027
    통나무 자르기
    우아한 종료
    백준1238
    백준14465
    소가 길을 건너간 이유 5
    백준 1114 파이썬
    백준2262
    백준 1034
    1114백준
    preStop
    백준 1004
    백준6980
    백준 10610
    경력 서류
    백준 램프
    자바 스레드 상태
    백준 18405
    다이렉트 버퍼
    소수&팰린드롬
    자바 물리 메모리
    백준 경쟁적 전염
    terminationGracePeriodSeconds
    백준 고층 건물
    백준1747
    백준 30
    2020 카카오 인턴
    백준 어린 왕자
    자바 최대공약수
    자바 프로세스 종료
    네이티브 메모리
    코틀린 코루틴
    컴공 취준
    백준 1114
    백준1188
    합승 택시 요금
    백준15954
    direct buffer
    자바 최소공배수
    백준 파티
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
WildDevmon
[2021 KAKAO BLIND RECRUITMENT] 합승 택시 요금
상단으로

티스토리툴바