[18회] E-PPER(기출) : 합승택시요금
우측 버튼을 눌러 기기를 연결해주세요.
문제 정보
[18회] E-PPER(변형) : 합승택시요금 - 경유지 추가
매우 쉬움
유형
프로그래밍
배점
100
참여자
29
정답률
96.5%
0
0

[문제 설명]

밤늦게 귀가할 때 안전을 위해 항상 택시를 이용하던 무지는 최근 야근이 잦아져 택시를 더 많이 이용하게 되어 택시비를 아낄 수 있는 방법을 고민하고 있습니다. "무지"는 자신이 택시를 이용할 때 동료인 어피치 역시 자신과 비슷한 방향으로 가는 택시를 종종 이용하는 것을 알게 되었습니다. "무지"는 "어피치"와 귀가 방향이 비슷하여 택시 합승을 적절히 이용하면 택시요금을 얼마나 아낄 수 있을 지 계산해 보고 "어피치"에게 합승을 제안해 보려고 합니다.


위 예시 그림은 택시가 이동 가능한 반경에 있는 6개 지점 사이의 이동 가능한 택시노선과 예상요금을 보여주고 있습니다.

그림에서 A와 B 두 사람은 출발지점인 4번 지점에서 출발해서 택시를 타고 귀가하려고 합니다. 두 사람 모두 1번 지점에 볼 일이 있어 꼭 함께 들렀다 가야 하고,  A의 집은 6번 지점에 며 B의 집은 2번 지점에 있고 두 사람이 모두 귀가하는 데 소요되는 예상 최저 택시요금이 얼마인 지 계산하려고 합니다. 

  • 그림의 원은 지점을 나타내며 원 안의 숫자는 지점 번호를 나타냅니다.
    • 지점이 n개일 때, 지점 번호는 1부터 n까지 사용됩니다.
  • 지점 간에 택시가 이동할 수 있는 경로를 간선이라 하며, 간선에 표시된 숫자는 두 지점 사이의 예상 택시요금을 나타냅니다.
    • 간선은 편의 상 직선으로 표시되어 있습니다.
    • 위 그림 예시에서, 4번 지점에서 1번 지점으로(4→1) 가거나, 1번 지점에서 4번 지점으로(1→4) 갈 때 예상 택시요금은 10원으로 동일하며 이동 방향에 따라 달라지지 않습니다.
  • 예상되는 최저 택시요금은 다음과 같이 계산됩니다.
    • 4→1 : A, B 모두 볼 일이 있는 1번 지점까지 합승하여 택시를 이용합니다. 예상 택시요금은 10원 입니다.
    • 1→5 : A, B가 합승하여 택시를 이용합니다. 예상 택시요금은 24원 입니다.
    • 5→6 : A가 혼자 택시를 이용합니다. 예상 택시요금은 2원 입니다.
    • 5→3→2 : B가 혼자 택시를 이용합니다. 예상 택시요금은 24 + 22 = 46원 입니다.
    • A, B 모두 귀가 완료까지 예상되는 최저 택시요금은 10 + 24 + 2 + 46 = 82원 입니다.

[문제]

지점의 개수 n, 출발지점을 나타내는 s, A의 도착지점을 나타내는 a, B의 도착지점을 나타내는 b, 지점 사이의 예상 택시요금을 나타내는 fares, 함께 볼 일이 있는 경유지 c가 매개변수로 주어집니다. 이때, A, B 두 사람이 s에서 출발해서 경유지를 들른 후 각각의 도착 지점까지 택시를 타고 간다고 가정할 때, 최저 예상 택시요금을 계산해서 return 하도록 solution 함수를 완성해 주세요.

만약, 경유지를 들른 후 아예 합승을 하지 않고 각자 이동하는 경우의 예상 택시요금이 더 낮다면, 합승을 하지 않아도 됩니다.

[제한사항]

  • 지점갯수 n은 3 이상 200 이하인 자연수입니다.
  • 지점 s, a, b, c는 1 이상 n 이하인 자연수이며, 각기 서로 다른 값입니다.
    • 즉, 출발지점, A의 도착지점, B의 도착지점, 경유지는 서로 겹치지 않습니다.
  • fares는 2차원 정수 배열입니다.
  • fares 배열의 크기는 2 이상 n x (n-1) / 2 이하입니다.
    • 예를들어, n = 6이라면 fares 배열의 크기는 2 이상 15 이하입니다. (6 x 5 / 2 = 15)
    • fares 배열의 각 행은 [d, e, f] 형태입니다.
    • d지점과 e지점 사이의 예상 택시요금이 f원이라는 뜻입니다.
    • 지점 d, e는 1 이상 n 이하인 자연수이며, 각기 서로 다른 값입니다.
    • 요금 f는 1 이상 100,000 이하인 자연수입니다.
    • fares 배열에 두 지점 간 예상 택시요금은 1개만 주어집니다. 즉, [d, e, f]가 있다면 [e, d, f]는 주어지지 않습니다.
  • 출발지점 s에서 경유지 c로 가는 경로와 도착지점 a, b로 가는 경로가 존재하는 경우만 입력으로 주어집니다.

[입출력 예에 대한 설명]

입출력 예#2


  • A와 B가 3→2 경로로 함께 경유지를 들른 후,  A가 2→3→6→4, B가 2→1 경로로 각자 택시를 타고 가는 것이 최저 예상 택시요금입니다.
  • 따라서 최저 예상 택시요금은 (3) + (3 + 1 + 4) + (6) = 17 원 입니다.

입출력 예#3

  • A와 B가 4→2→1 경로로 함께 경유지를 들른 후, A와 B가 1→2→6 구간을 합승하고 B가 6번 지점에서 내린 후, A가 6→5 구간을 혼자 타고 가는 것이 최저 예상 택시요금입니다.
  • 따라서 최저 예상 택시요금은 (8 + 1) + (1 + 6) + (11) = 27 원 입니다.
입/출력 예시
:
공백
:
줄 바꿈
:
예시 1
입력
64621
4110
3524
562
3141
5124
4650
2466
2322
1625
출력
82
예시 2
입력
73412
579
464
361
323
216
1413
5410
725
5321
출력
17
예시 3
입력
64561
266
637
467
6511
2512
5320
248
439
121
출력
27
⋇ 입출력 형식을 잘 지켜주세요
Q&A
누구나 질문하고 답변할 수 있는 Q&A입니다. 문제를 풀며 어려웠던 부분에 대해 질문해보세요.
이 문제에 관한 질문 (0)