티스토리 뷰

코딩테스트

떡볶이 떡 만들기

ajaa 2024. 10. 26. 08:00

📌문제

한 봉지 안에 들어가는 떡볶이 떡의 총 길이를 절단기로 잘라서 맞춰준다.

절단기에 높이 H를 지정하면 줄지어진 떡을 한 번에 절단한다.

예를 들어 높이가 19, 14, 10, 16cm인 떡이 나란히 있고 절단기 높이를 15cm로 지정하면 자른 뒤 떡의 높이는 15, 14, 10, 15cm가 될 것이다. 잘린 떡의 길이는 차례대로 4, 0, 0, 2cm이다. 손님은 6cm만큼의 길이를 가져간다.

손님이 왔을 때 요청한 총 길이가 M일 때 적어도 M만큼의 떡을 얻기 위해 절단기에 설정할 수 있는 높이의 최댓값을 구하는 프로그램을 작성하시오.

 

📌풀이

적절한 높이를 찾을 때까지 절단기의 높이 H를 반복해서 조정

'현재 이 높이로 자르면 조건을 만족할 수 있는가?'를 확인한 뒤에 조건의 만족 여부(예 혹은 아니오)에 따라서 탐색 범위를 좁혀서 해결

범위를 좁힐 떄는 이진 탐색의 원리를 이용해 절반씩 탐색 범위를 좁혀 나감

 

얻을 수 있는 떡의 길이 합이 필요한 떡의 길이보다 크거나 같을 때마다 결과값을 중간점 값으로 갱신

 

📌코드

n, m = list(map(int, input().split()))
array = list(map(int, input().split()))

# 이진 탐색을 위한 시작점과 끝점 설정
start = 0
end = max(array)

# 이진 탐색 수행(반복적)
result = 0
while start <= end:
    total = 0
    mid = (start + end) // 2
    for x in array:
        # 잘랐을 때 떡의 양 계산
        if x > mid:
            total += x - mid
    # 떡의 양이 부족한 경우 더 많이 자르기(왼쪽 부분 탐색)
    if total < m:
        end = mid - 1
    # 떡의 양이 많은 경우 더 적게 자르기(오른쪽 부분 탐색)
    else:
        result = mid  # 최대한 덜 잘랐을 때가 정답이므로, 여기에서 result에 절단기의 높이를 기록
        start = mid + 1

print(result)

 

📌참고

https://g.co/kgs/eyd5SSd

 

이것이 취업을 위한 코딩 테스트다 with 파이썬

IT 취준생이라면 누구나 입사하고 싶은 카카오・삼성전자・네이버・라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다! IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년

www.google.com

 

 

'코딩테스트' 카테고리의 다른 글

1로 만들기  (0) 2024.10.29
다이내믹 프로그래밍  (5) 2024.10.28
부품 찾기  (0) 2024.10.25
이진 탐색  (0) 2024.10.24
두 배열의 원소 교체  (2) 2024.10.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함