본 내용은 '이것이 취업을 위한 코딩테스트다 with 파이썬' 책을 기반으로 포스팅 하였습니다.
문제
저작권 문제가 될 수 있어 문제는 삭제합니다.
풀이 코드
// 입력 조건
// 4 6
// 19 15 10 17
import Foundation
let input = readLine()!.split(separator: " ").map({Int(String($0))!})
var heightArr = readLine()!.split(separator: " ").map({Int(String($0))!})
let n = input[0]
let target = input[1]
var start = 0
var end = heightArr.max()!
while true {
if start > end {
print("X")
break
}
let mid = Int(floor((Double(start) + Double(end)) / 2))
var result = 0
for i in 0..<n {
if heightArr[i] > mid {
result += heightArr[i] - mid
}
}
if result == target {
print(start)
break
} else if result > target {
start = mid + 1
} else {
end = mid - 1
}
}
// 15'Algorithm > 이코테 문제풀이' 카테고리의 다른 글
| 다이나믹 프로그래밍 - 개미 전사(Swift) (0) | 2022.08.09 |
|---|---|
| 다이나믹 프로그래밍 - 1로 만들기(Swift) (0) | 2022.08.09 |
| 이진 탐색 - 부품 찾기(Swift) (0) | 2022.08.09 |
| 정렬 - 두 배열의 원소 교체(Swift) (0) | 2022.08.09 |
| 정렬 - 성적이 낮은 순서로 학생 출력하기(Swift) (0) | 2022.08.09 |