ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 1162번 도로포장 JAVA
    알고리즘 2025. 11. 9. 14:35

    요구사항 정의

    • 노드 1부터 N까지 최소값으로 가는 경로의 합 찾기
    • 가는 도중에 도로를 포장하여 최대 K번 경로를 0으로 만들 수 있음

    제약 조건

    • T(걸리는 시간) < 10^6
    • N < 10^4
    • M < 5*10^4

    풀이 방법

    문제 읽자마자 `벽 뚫고 이동하기` 문제가 생각났고 풀이 방법은 생각보다 쉽게 구할 수 있었음

    또한 경로의 합이 N*T이기 때문에 long 타입을 사용했음

     다익스트라 + DP

     

    근데 제출 과정에서 이슈가 몇 가지 있었는데, 처음에는 메모리 초과가 나서 왜그런지 몰랐음 

    • 시간 초과
    • 메모리 초과

     

     

    내가 객체로 만들기 귀찮아서 long[], int[]로 큐에 넣어서 메모리 초과가 나는 거였음

    생각보다 배열이 잡아먹는 메모리 크기가 크다고 생각했다. 그래서 POJO로 변경했음

     

    시간 초과 문제는 이미 최소값보다 큼에도 갱신하려고 시도했기 때문인데

    다익스트라는 최소값으로 뽑기 때문에 이미 뽑았을 때  더 경로의 합이 큰 경우가 존재할 수 있다. 

    이런 경우에는 더 진행되지않도록 바로 가지치기를 해줘야한다.

     

    if(w > dist[n][k]) continue; // 이미 w보다 작은 값으로 갱신됐다면, 더 진행하지 않기

     

    코드

    '알고리즘' 카테고리의 다른 글

    백준 4883번 삼각 그래프 JAVA  (0) 2025.10.22
    백준 1744번 수 묶기  (0) 2025.10.07
    백준 1106번 호텔 JAVA  (2) 2025.08.08
    백준 17835번 면접보는 승범이네 JAVA  (2) 2025.07.21
    백준 14226번 이모티콘 JAVA  (0) 2025.07.06
Designed by Tistory.