자료 구조와 알고리즘

간선에 방향이 없는 그래프에서 간선의 가중치(거리)가 S−A: 4, S−B: 1, A−B: 2, A−C: 1, B−C: 5, C−T: 3, A−T: 6이다. 다익스트라 알고리즘으로 S에서 T까지의 최단 경로를 구했을 때, 그 경로와 길이는?

  1. AS→A→C→T, 길이 8
  2. BS→B→A→C→T, 길이 7
  3. CS→B→C→T, 길이 9
정답과 해설 보기

정답: B. S→B→A→C→T, 길이 7

다익스트라 알고리즘은 거리가 확정되지 않은 정점 중 가장 가까운 것을 확정하고, 그 이웃 정점의 거리를 갱신하는 것을 반복합니다. S(0)에서 B가 1로 확정되고, B를 거치면 A는 1 + 2 = 3으로 직접 가는 4보다 짧아집니다. A(3)를 확정하면 C는 3 + 1 = 4, T는 3 + 6 = 9가 되고, C(4)를 확정하면 T는 4 + 3 = 7로 갱신됩니다. 따라서 최단 경로는 S→B→A→C→T이고 길이는 7입니다. S→A→C→T(8)는 S−A를 직접 지나는 만큼 길고, S→B→C→T(9)는 B−C의 5가 크기 때문에 길어집니다.

이 분야 연습하기 분야로 돌아가기

자료 구조와 알고리즘의 다른 문제

  1. 다익스트라 알고리즘으로 올바른 최단 경로를 구하기 위한, 그래프에 관한 조건으로 올바른 것은?
  2. 작업 A~E에 'A는 C보다 앞', 'B는 C보다 앞', 'C는 D보다 앞', 'B는 E보다 앞', 'E는 D보다 앞'이라는 순서 제약이 있다. 모든 제약을 만족하는 작업의 순서(위상 정렬의 결과)는?
  3. 함수 f(x, y)를 'y가 0이면 x를 반환하고, 그렇지 않으면 f(y, x mod y)를 반환한다'로 정의한다. f(84, 36)을 호출했을 때의 반환값과, f가 호출되는 횟수(첫 호출 포함)의 조합은?
  4. 피보나치 수를 구하는 함수 fib(n)을 'n이 1 이하이면 n을 반환하고, 그렇지 않으면 fib(n−1) + fib(n−2)를 반환한다'로 재귀적으로 정의했다. fib(5)를 호출했을 때 fib가 호출되는 횟수는 첫 호출을 포함하여 몇 회인가?
  5. 1엔, 4엔, 6엔의 3종류 동전으로 8엔을 지불한다. 큰 동전부터 쓸 수 있는 만큼 쓰는 탐욕 알고리즘으로 정했을 때의 개수와 최소 개수의 관계로 올바른 것은?