[python] 백준 18352 특정 거리의 도시 찾기 - 메모리 초과 해결

2023. 4. 1. 00:27· Problem Solving/Problem Solving
728x90

문제

 

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

 

 

풀이

 

풀이 ( 172212 KB, 2904 ms)

 

import sys, heapq
input = sys.stdin.readline

def djk(start) :
    global dist, cities

    heap = []
    heapq.heappush(heap, (0, start))
    dist[start] = 0

    while heap :
        curd, cur = heapq.heappop(heap)
        if dist[cur] < curd : continue # 지금이 더 작으면 갱신 안함 (== 이미 방문 한 것)

        for i in cities[cur] :
            cost = curd + i[1]
            if dist[i[0]] > cost :
                dist[i[0]] = cost
                heapq.heappush(heap, (cost, i[0]))

n, m, k, x = map(int, input().split()) # 도시 n개(1 ~ n), 도로 m개, 거리 k, 출발도시 x

cities = [[] for _ in range(n + 1)]
for _ in range(m) :
    r, c = map(int, input().split())
    cities[r].append((c, 1))

dist = [300001] * (n + 1)

djk(x)

ans = []
for i in range(1, n + 1) :
    if dist[i] == k :
        ans.append(i)

if len(ans) == 0 :
    print(-1)
else :
    for i in ans : print(i)

 

배운 점

 

시간 초과 해결 방법

 

1. 도시 정보를 2차원 리스트가 아닌 1차원 리스트로 입력 받음 : 출발 노드를 인덱스로 이용하여 해당 인덱스 번호에 튜플로 도착 노드 인덱스와 가중치를 입력

2. 도시 정보는 초기에 0이 입력된 리스트가 아닌 빈 리스트로 이루어진 리스트로 초기화

728x90

'Problem Solving > Problem Solving' 카테고리의 다른 글

[java] 백준 2206 벽 부수고 이동하기 - 시간 초과 해결  (0) 2023.04.06
'Problem Solving/Problem Solving' 카테고리의 다른 글
  • [java] 백준 2206 벽 부수고 이동하기 - 시간 초과 해결
zeomzzz
zeomzzz
zeomzzz
zeom blog
zeomzzz
전체
오늘
어제
  • 분류 전체보기
    • TIL
      • 2024
    • Problem Solving
      • Algorithm
      • Problem Solving
    • Framework & Library
      • Spring & SpringBoot
      • React
    • Language
      • Java
      • Python
      • C#
      • JavaScript
      • MySQL
      • C
    • DB
      • SQL
      • NoSQL
    • Others
      • DevOps
    • CS
      • 운영체제
      • 네트워크
      • 데이터베이스
    • Tools
      • Git
      • Jira
      • GA
    • Domain
      • Payment
      • Finance & Fintech
    • blog
    • 관심사

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
zeomzzz
[python] 백준 18352 특정 거리의 도시 찾기 - 메모리 초과 해결
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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