KWiOS
KWiOS0101
KWiOS
  • 분류 전체보기 (108)
    • Algorithm (41)
      • 이코테 (14)
      • 이코테 문제풀이 (21)
      • 프로그래머스 (6)
    • CS (1)
      • 모두를 위한 컴퓨터 과학(CS50 2019) (0)
    • iOS (15)
    • Swift (36)
      • Swift문법 (32)
      • 기타 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 6

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
KWiOS

KWiOS0101

이진 탐색 - 떡볶이 떡 만들기(Swift)
Algorithm/이코테 문제풀이

이진 탐색 - 떡볶이 떡 만들기(Swift)

2022. 8. 9. 17:57
본 내용은 '이것이 취업을 위한 코딩테스트다 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
    'Algorithm/이코테 문제풀이' 카테고리의 다른 글
    • 다이나믹 프로그래밍 - 개미 전사(Swift)
    • 다이나믹 프로그래밍 - 1로 만들기(Swift)
    • 이진 탐색 - 부품 찾기(Swift)
    • 정렬 - 두 배열의 원소 교체(Swift)
    KWiOS
    KWiOS

    티스토리툴바