Skip to content

Conversation

@lkhyun
Copy link
Contributor

@lkhyun lkhyun commented Aug 21, 2025

🧷 문제 링크

🧭 풀이 시간

150분

👀 체감 난이도

✏️ 문제 설명

전기차로 출발지에서 목적지로 이동할거임.
다음과 같은 메소드가 있음.

  1. 초기 도시 상태와 간선이 주어짐
  2. 간선을 추가할 수 있음.
  3. 간선을 삭제할 수 있음.
  4. 전염병 목록과 전파 시간이 주어질때, 출발지에서 목적지까지 가는 최소 시간 출력.
    도시에는 충전소가 한 개씩 있음. 여기서 전기차의 전기가 부족하면 충전하고 가야함. 초당 충전량이 주어짐.
    간선에는 이동하는 시간, 사용하는 전기, id가 주어짐.
    전염병은 특정 위치에서 발생하기 시작함. 전염병이 이동하는 시간은 전기차가 간선을 통해 이동하는 시간과 공유함.
    도착지까지 가는 최소 시간을 구해야 함.

🔍 풀이 방법

다익스트라
전염병은 전기가 필요없기에 전염병 전용 다익스트라로 시간만을 이용해서 하나 만들고
전기차 전용 다익스트라를 따로 구현함.
상태를 다음과 같이 정의했음.
이 지점까지 오는데 걸린 시간과 남은 용량이 하나의 상태임.
매 지점마다 다음 지점으로 이동하기 위한 최소 전기를 얻게될 때, 전염병을 만나지 않고 dist 배열을 업데이트 할 수 있으면 큐에 추가.
현재 지점에서 충전을 더 하는게 추후 이득이 될 수 있기에 최대 충전 용량까지 충전하며 조건에 맞으면 상태를 더 넣어줬음.

전염병 각각 시작위치에서 다익스트라를 진행하고 각 도시마다 전염병이 하나라도 도착하면 이동할 수 없기에
전염병중 가장 먼저 도착하는 경우만을 저장한 배열을 하나 만들고 전기차 전용 다익스트라의 파라미터로 제공함.
이는 상태 추가 조건에 활용됨.
전기차 다익스트라가 마무리된 후, 도착지점의 모든 전기 용량에 대해서 최소 시간을 뽑아서 출력.

⏳ 회고

간선의 사용 전기 용량이 전기차의 최대 전기 용량보다 크다면 이동할 수 없기에 예외 처리 해줘야 했음.
구현 후 시간 초과 문제가 발생했는데,
출발지와 도착지가 주어졌고 다익스트라 특성상 가장 먼저 도착지에 도착하는 경우가 최소 시간이므로
가지치기를 해주었더니 통과할 수 있었음.
가지치기를 잘하는게 핵심이었던 것 같다.

@lkhyun lkhyun self-assigned this Aug 21, 2025
@lkhyun lkhyun added the success 👍 해설을 보지 않고 풀었을 때 label Aug 21, 2025
@ShinHeeEul ShinHeeEul merged commit 15188ae into main Aug 21, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants