Skip to content

Commit

Permalink
solve(programmers): LV3_금과_은_운반하기_kt
Browse files Browse the repository at this point in the history
# id: 문제 id를 숫자로 작성
# categories : 해당 문제의 유형을 ,로 구분하여 작성
# tags : 해당 문제의 태그를 ,로 구분하여 작성
# time : 해당 문제 풀이에 걸린 시간을 분단위 숫자로 작성
# try : 해당 문제에 몇번의 시도를 했는지 숫자로 작성
# help: 해당 문제에 외부의 도움을 받았는지 true/false로 작성
# url : 해당 문제의 url을 작성
id: 86053
categories: [이진탐색]
tags: []
time: 100
try: 2
help: true
url: https://school.programmers.co.kr/learn/courses/30/lessons/86053
  • Loading branch information
gogumaC committed Aug 19, 2024
1 parent 94f4f3c commit e8c90c7
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions src/algorithmProblems/programmers/LV3_금과_은_운반하기.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import kotlin.math.*

class Solution {
fun solution(a: Int, b: Int, g: IntArray, s: IntArray, w: IntArray, t: IntArray): Long {
var answer: Long = -1

val n=g.size

var low=0L

var high=((a+b)*2L*(t.maxOrNull()?:1).toLong())

while(low<high){
val mid=low+(high-low)/2

var total=0L
var mg=0L
var ms=0L

for(i in 0 until n){
val time=t[i]*2.toDouble()
val count:Long=((mid+t[i])/time).toLong()
val mines=count*w[i]
mg+=min(g[i].toLong(),mines)
ms+=min(s[i].toLong(),mines)
total+=min(g[i].toLong()+s[i].toLong(),mines)
}

if(total<a+b || mg<a || ms<b){
low=mid+1
}else{
high=mid
}
}
return high
}
}

0 comments on commit e8c90c7

Please sign in to comment.