๐ฌย ๋ฌธ์
https://app.codility.com/programmers/lessons/14-binary_search_algorithm/min_max_division/
๐ฌย Idea
- ์ด๋ถํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ ํธ๋ ๋ฌธ์ ์๋ค. ๊ทธ๋ฌ๋ ์ด๋ถํ์ ์๊ณ ๋ฆฌ์ฆ์ ์์ฉํด ํด๋น ๋ฌธ์ ์ ์ ์ฉ์ํค๋ ๊ฒ์ด ๋ง์ด ์ด๋ ค์ ๋ค. ์์ผ๋ก ๋ ๊ณต๋ถํด์ผ๊ฒ ๋ค!
๐ฌย ํ์ด
publicfunc solution(K :Int, M :Int, A :inout[Int])->Int{varlow=A.max()!
varhigh=A.reduce(0,+)if K ==1{return high }if K >=A.count {return low }while low <= high {letmid=(low + high)/2ifisValid(A: A, maxBlockCount: K, maxBlockSize: mid){
high = mid -1}else{
low = mid +1}}return low
}func isValid(A:[Int], maxBlockCount:Int, maxBlockSize:Int)->Bool{varblockSum=0varblockCount=0forain A {if blockSum + a > maxBlockSize {
blockSum = a
blockCount +=1}else{
blockSum += a
}if blockCount >= maxBlockCount {returnfalse}}returntrue}**์์์๊ฐ** : 73๋ถ
์๊ฐ ๋ณต์ก๋ : O(Nlog(N+M))*
ํ๊ฐํ : https://app.codility.com/demo/results/trainingW3HGHY-P47/
๐ฌย ๋ฌธ์ https://app.codility.com/programmers/lessons/14-binary_search_algorithm/min_max_division/
๐ฌย Idea๐ฌย ํ์ด**์์์๊ฐ**: 73๋ถ์๊ฐ ๋ณต์ก๋: O(Nlog(N+M))*ํ๊ฐํ: https://app.codility.com/demo/results/trainingW3HGHY-P47/