떡볶이 떡 만들기 Python3.6 def binary_search(array, target, start, end): if start>end: return None mid = (start+end)//2 total = 0 for x in array: #전체 떡의 길이를 하나씩 출력해서 계산 if x > mid: total += x - mid #자른 떡의 길이의 합 if total < target: return binary_search(array, target, start, mid-1) elif total > target: return binary_search(array, target, mid+1, end) else: # 자른 떡의 길이의 합 == 요청한 떡의 길이 return mid n, m = list(map(int, input().split())) # n: 떡의 개수 / m: 요청한 떡의 길이(Target) h_array = list(map(int, input().split())) result = binary_search(h_array, m, 0, max(h_array)) if result == None: print('원하는 결과값이 나오지 않습니다.') else: print('잘라야 하는 높이: ', result)
@dobikim56722 жыл бұрын
저도 똑같이 코드를 짯습니다.. 하지만 문제는 적어도 M만큼의 떡을 얻기 위해서니까 결과값 이 7이여도 결과가 나와야하는데 이렇게 되면 안나와서 고민입니다.
@큘론큘론2 жыл бұрын
@@dobikim5672 저는 그래서 이런식으로 조건을 걸어 봤습니다 if start>end: if total > target: return mid else: return None 이렇게 하니까 결과가 잘 나오더라구요
@이지희-e8v14 күн бұрын
@@큘론큘론 감사합니다 !
@coldwisdom2 жыл бұрын
좋은 강의 감사드립니다. 열심히 공부해 볼께요. (1회 완강)
@OurLofiMusic2933 жыл бұрын
마지막 예제는 자바 코드가 없네유 ㅠㅠ 시작점과 끝점을 따로 이진 탐색을 활용해서 찾는 아이디어는 생각하지 못 했고, 이진 탐색을 통해 타겟 값을 찾은 다음 정렬 된 상태이기 때문에 찾은 타겟 값에 바로 옆에 인덱스를 확인하여 카운트 해주는 방식으로 풀었는데 반만 맞춘거 같네여 항상 강의 감사합니다! public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); // 원소의 갯수 int x = sc.nextInt(); // 찾을 원소 int cnt = 0; // 출연 횟수 int[] arr = new int[n]; for(int i=0; i