[백준] 22865 가장 먼 곳 Python

2023. 2. 15. 08:42·Algorithm (PS)
728x90

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

 

22865번: 가장 먼 곳

$N$개의 땅 중에서 한 곳에 자취를 하려고 집을 알아보고 있다. 세 명의 친구 $A$, $B$, $C$가 있는데 이 친구들의 살고 있는 집으로부터 가장 먼 곳에 집을 구하려고 한다. 이때, 가장 먼 곳은 선택할

www.acmicpc.net

다익스트라 알고리즘을 이용해서 a, b, c로부터 모든 지점까지의 거리를 구한다. 

그 거리들을 담아 놓은 리스트가 dist_a, dist_b, dist_c이다. 

for i in range(1, n+1):
    if max_dist < min(dist_a[i], dist_b[i], dist_c[i]):
        max_dist = min(dist_a[i], dist_b[i], dist_c[i])
        result_area = i 

각 지역 (1 ~ N) 에서 각각 a, b, c 사이의 거리들 중 최솟값을 구하고, 이 최솟값들 중에서 최댓값을 구한다. 

import heapq

n = int(input())
INF = int(1e9)

a, b, c = map(int, input().split())
graph = [[] * (n+1) for _ in range(n+1)]
m = int(input())
for _ in range(m):
    d, e, length = map(int, input().split())
    graph[d].append((e, length)) # 양 방향 그래프 
    graph[e].append((d, length))


def dijkstra(start):
    global graph
    distance = [INF] * (n+1)
    distance[start] = 0 # 자기자신 
    queue = []

    heapq.heappush(queue, (0, start))
    while queue:
        dist, now = heapq.heappop(queue)
        if distance[now] < dist: # 이미 갱신된 거리 값이라면 continue 
            continue 
        for next, next_dist in graph[now]:
            total_dist = dist + next_dist
            if total_dist < distance[next]:
                distance[next] = total_dist
                heapq.heappush(queue, (total_dist, next))
    return distance 

dist_a = dijkstra(a)
dist_b = dijkstra(b)
dist_c = dijkstra(c)
max_dist = 0 
result_area = 0 
for i in range(1, n+1):
    if max_dist < min(dist_a[i], dist_b[i], dist_c[i]):
        max_dist = min(dist_a[i], dist_b[i], dist_c[i])
        result_area = i 

print(result_area)
728x90

'Algorithm (PS)' 카테고리의 다른 글

[백준] 2310번 : 어드벤처 게임 Python  (0) 2023.02.19
[프로그래머스] 합승 택시 요금 Python  (0) 2023.02.18
[백준] 10830번: 행렬 제곱 - Python  (0) 2023.02.11
[백준] 9372번 상근이의 여행 Python  (0) 2023.02.09
[백준] 20055번 : 컨베이어 벨트 위의 로봇 (Python)  (0) 2023.02.09
'Algorithm (PS)' 카테고리의 다른 글
  • [백준] 2310번 : 어드벤처 게임 Python
  • [프로그래머스] 합승 택시 요금 Python
  • [백준] 10830번: 행렬 제곱 - Python
  • [백준] 9372번 상근이의 여행 Python
minjiwoo
minjiwoo
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minjiwoo
minji's engineering note
minjiwoo
전체
오늘
어제
  • 분류 전체보기 (613)
    • Data Engineering (42)
      • Apache Spark (11)
      • Databricks & Delta Lake (9)
      • Airflow (3)
      • SQL (6)
      • Trouble Shooting (2)
      • Hadoop (2)
      • MLOps (1)
    • Cloud Engineering (104)
      • AWS (23)
      • Linux 🐧 (29)
      • Docker 🐳 (21)
      • Kubernetes ⚙️ (20)
      • Ansible (10)
    • Computer Science (87)
      • 네트워크 (9)
      • 운영체제 (25)
      • 정보처리기사 (48)
      • CS 기술 면접 스터디 (3)
    • Programming Languages (27)
      • Python (17)
      • C와 C++ (10)
    • Backend (5)
      • Django (2)
    • 프로젝트 (2)
      • 테크포임팩트 (2)
    • iOS (11)
      • 레이블러리 (2)
    • Algorithm (PS) (275)
      • LeetCode (6)
    • 개발일기 (30)
      • 내돈내산 후기🎮 (3)
      • 개발자 취준생 (5)
      • Today I Learned (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Hi there

인기 글

태그

  • Databricks
  • 클라우드
  • dfs
  • 알고리즘
  • 스파크
  • 백준
  • 빅데이터
  • 리눅스
  • BFS
  • 백트래킹
  • EC2
  • python
  • 쿠버네티스
  • Leetcode
  • dp
  • linux
  • ansible
  • AWS
  • 운영체제
  • 파이썬
  • 데이터브릭스
  • 카카오코딩테스트
  • 데이터엔지니어
  • Kubernetes
  • Swift
  • docker
  • 데이터엔지니어링
  • SPARK
  • 프로그래머스
  • 코딩테스트

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
minjiwoo
[백준] 22865 가장 먼 곳 Python
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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