[백준 / Python] #18223 민준이와 마산 그리고 건우

2024. 2. 25. 17:39· Koala - 13기/코딩테스트 준비 스터디
목차
  1. 문제
  2. Algorithm
  3. Code

문제

 

https://www.acmicpc.net/problem/18223

 

18223번: 민준이와 마산 그리고 건우

입력의 첫 번째 줄에 정점의 개수 V와 간선의 개수 E, 그리고 건우가 위치한 정점 P가 주어진다. (2 ≤ V  ≤ 5,000, 1 ≤ E ≤ 10,000, 1 ≤ P  ≤ V) 두 번째 줄부터 E개의 줄에 걸쳐 각 간선의 정보

www.acmicpc.net


Algorithm

양방향 간선이고, 문제에서 요구하는 것이 건우의 위치를 지나는 path가 최단거리인지 확인하는 문제이다.

양방향 간선이므로, 시작점이 1인 dijkstra알고리즘과 시작점이 4인 dijkstra알고리즘을 돌려서 두개의 path의 값을 비교해 주면 된다.

둘의 값이 같으면 건우의 위치를 지나도 최단거리이므로 SAVE HIM을 출력해주면 되고, 값이 다르면 건우의 위치를 지나지 않는 것이므로 GOOD BYE를 출력해주면 된다.

그래프는 동일하고, 각 정점까지의 거리를 담는 배열을 2개 따로 선언하여 각각 dijkstra알고리즘을 실행해 주면 된다. 

...
distance_nopass = [INF] * (n+1)
distance_pass = [INF] * (n+1)
...
def dijkstra(start,distance):
    q = []
    heapq.heappush(q, (0, start))
    distance[start] = 0
    ...

배열 2개를 돌려야 하므로 dijkstra 함수에 인자를 넣어주는 것으로 변경하면 된다.


 

 

Code

input = __import__('sys').stdin.readline
import sys
import heapq
sys.setrecursionlimit(10**6)

#정점, 간선의 개수 및 건우의 위치
n,m,passpoints= map(int, input().split())
INF = int(1e9)
#그래프는 동일
graph= [[] * (n+1) for _ in range(n+1)]
#시작점이 1인 distance, 시작점이 passpoints인 distance 선언
distance_nopass = [INF] * (n+1)
distance_pass = [INF] * (n+1)

for _ in range(m):
    a, b, c = map(int, input().split())
    graph[a].append((b,c))
    graph[b].append((a,c))


def dijkstra(start,distance):
    q = []
    heapq.heappush(q, (0, start))
    distance[start] = 0

    while q:
        dist, now = heapq.heappop(q)
        if distance[now] < dist:
            continue
        for i in graph[now]:
            cost = dist + i[1]
            if cost < distance[i[0]]:
                distance[i[0]] = cost
                heapq.heappush(q, (cost, i[0]))

#알고리즘 실행
dijkstra(1,distance_nopass)
dijkstra(passpoints,distance_pass)

#거리 비교
least_distance = distance_nopass[n]
passpoint_distance = distance_pass[1]+distance_pass[n]

if least_distance == passpoint_distance:
    print("SAVE HIM")
else:
    print("GOOD BYE")

 

저작자표시 (새창열림)

'Koala - 13기 > 코딩테스트 준비 스터디' 카테고리의 다른 글

[백준/C++] 1504번 특정한 최단경로  (0) 2024.02.25
[백준/Python] 1238 파티  (0) 2024.02.25
[백준/Python] #13549 숨바꼭질 3  (0) 2024.02.25
[백준/C++] 10828번: 스택  (0) 2024.02.24
[백준/Python] 5972번 택배 배송  (0) 2024.02.24
  1. 문제
  2. Algorithm
  3. Code
'Koala - 13기/코딩테스트 준비 스터디' 카테고리의 다른 글
  • [백준/C++] 1504번 특정한 최단경로
  • [백준/Python] 1238 파티
  • [백준/Python] #13549 숨바꼭질 3
  • [백준/C++] 10828번: 스택
KauKoala
KauKoala
항공대 알고리즘 동아리 Koala 🥰
Koala항공대 알고리즘 동아리 Koala 🥰
KauKoala
Koala
KauKoala
전체
오늘
어제
  • 분류 전체보기 (1884)
    • 공지 게시판 (10)
    • 정보 게시판 (8)
    • Codeforce (15)
    • acm-icpc (6)
    • Koala - 1기 (16)
    • Koala - 2기 (111)
      • Programming Contest (1)
      • A반 (20)
      • B반 (39)
      • C반 (22)
      • 기초 강의 (18)
    • Koala - 3기 (10)
      • 기초 스터디 (7)
    • Koala - 4기 (67)
    • Koala - 5기 (144)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (68)
    • Koala - 6기 (102)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (25)
      • 모의 테스트 스터디 (1)
    • Koala - 7기 (167)
      • 기초 알고리즘 스터디 (97)
      • 코딩테스트 준비 스터디 (68)
      • 모의 테스트 스터디 (1)
    • Koala - 8기 (44)
      • 기초 알고리즘 스터디 (32)
      • 코딩테스트 준비 스터디 (10)
      • 코드포스 버츄얼 스터디 (0)
      • 프로그래머스 LV2 스터디 (0)
    • Koala - 9기 (205)
      • 기초 알고리즘 스터디 (138)
      • 코딩테스트 준비 스터디 (64)
      • 모의테스트 준비 스터디 (1)
    • Koala - 10기 (117)
      • 기초 알고리즘 스터디 (30)
      • 코딩테스트 준비 스터디 (86)
      • 모의테스트 준비 스터디 (1)
    • Koala - 11기 (151)
      • 기초 알고리즘 스터디 (46)
      • 코딩테스트 준비 스터디 (104)
      • 모의테스트 준비 스터디 (1)
    • Koala - 12기 (86)
      • 기초 알고리즘 스터디 (31)
      • 코딩테스트 준비 스터디 (55)
    • Koala - 13기 (119)
      • 기초 알고리즘 스터디 (52)
      • 코딩테스트 준비 스터디 (67)
    • Koala - 14기 (116)
      • 기초 알고리즘 스터디 (39)
      • 코딩테스트 준비 스터디 (77)
    • Koala - 15기 (138)
      • 기초 알고리즘 스터디 (73)
      • 코딩테스트 준비 스터디 (65)
    • Koala - 16기 (47)
      • 코딩테스트 기초 스터디 (16)
      • 코딩테스트 심화 스터디 (31)
    • Koala - 17기 (62)
      • 코딩테스트 기초 스터디 (15)
      • 코딩테스트 심화 스터디 (47)
    • Koala - 18기 (31)
      • 코딩테스트 기초 스터디 (11)
      • 코딩테스트 심화 스터디 (20)
    • Koala - 19기 (38)
      • 코딩테스트 기초 스터디 (7)
      • 코딩테스트 심화 스터디 (31)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 🐨항공대 알고리즘 학회 Koala 3기 모집
  • 🐨항공대 알고리즘 학회 Koala 2기 모집
  • 소모임 소개

인기 글

태그

  • dfs
  • BOJ
  • BFS
  • C++
  • 백준
  • dp
  • 백트래킹
  • 파이썬

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
KauKoala
[백준 / Python] #18223 민준이와 마산 그리고 건우
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.