Skip to content

Commit

Permalink
solve(programmers): LV2_배달_kt
Browse files Browse the repository at this point in the history
# id: 문제 id를 숫자로 작성
# categories : 해당 문제의 유형을 ,로 구분하여 작성
# tags : 해당 문제의 태그를 ,로 구분하여 작성
# time : 해당 문제 풀이에 걸린 시간을 분단위 숫자로 작성
# try : 해당 문제에 몇번의 시도를 했는지 숫자로 작성
# help: 해당 문제에 외부의 도움을 받았는지 true/false로 작성
# url : 해당 문제의 url을 작성
id: 12978
categories: [다익스트라]
tags: []
time: 50
try: 2
help: false
url: https://school.programmers.co.kr/learn/courses/30/lessons/12978
  • Loading branch information
gogumaC committed Aug 21, 2024
1 parent f00720c commit 29634be
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions src/algorithmProblems/programmers/LV2_배달.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import java.util.*
import kotlin.math.*

class Solution {
fun solution(N: Int, road: Array<IntArray>, k: Int): Int {
var answer = 0

val pq=PriorityQueue<IntArray>{o1,o2->
o1[0]-o2[0]
}
val graph=Array(N){IntArray(N){Int.MAX_VALUE}}

for(r in road){
val a=r[0]-1
val b=r[1]-1
val w=r[2]
graph[a][b]=min(graph[a][b],w)
graph[b][a]=graph[a][b]
}
val dp=IntArray(N){Int.MAX_VALUE}

val visited=BooleanArray(N)
visited[0]=true
dp[0]=0
pq.add(intArrayOf(0,0))

while(pq.isNotEmpty()){
val e=pq.remove()
val w=e[0]
val current=e[1]

visited[current]=true

for(i in 0 until N){
if(!visited[i] && graph[current][i]!=Int.MAX_VALUE && dp[i]>dp[current]+graph[current][i]){
dp[i]=dp[current]+graph[current][i]
pq.add(intArrayOf(dp[i], i))
}
}

}

for(i in 0 until N){
if(dp[i]<=k) answer++
}

return answer
}
}

0 comments on commit 29634be

Please sign in to comment.