Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions 이코테/07 이진 탐색/떡볶이_떡_만들기/유진.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# 절단기의 길이를 이진탐색해서, 떡썰어보고, 결론 도출
# 이진 탐색 함수를 어떻게 구성해야 할까
# 절단기의 길이는 0 ~ 떡의 최대 길이
# 절반의 길이부터 설정해보고, 떡을 잘라서 m이 나오면 정답
def find(rice_cake, m, start, end):
result = 0
while start <= end:
mid = (start + end) // 2
sum = 0

# 설정한 절단기 값으로 떡을 잘라서 모두 합한 값 도출
for i in rice_cake:
if i > mid :
sum += i - mid
else:
continue

# 절단기 길이가 맞는지 확인
if sum == m:
result = mid
return result
elif sum < m:
end = mid - 1
else:
result = mid # "최대한 덜 잘랐을 때"!!!!!!!!
start = mid + 1
return None

n, m = 4, 1 #map(int, input().split())
rice_cake = [1, 2, 3, 4] #list(map(int, input().split()))

print(find(rice_cake, m, 0, max(rice_cake)))
23 changes: 23 additions & 0 deletions 이코테/07 이진 탐색/부품찾기/유진.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
def find(n_list, target, start, end):
while start <= end:
mid = (start + end) // 2
if n_list[mid] == target:
return mid # return True도 맞지 않나
elif n_list[mid] > target:
end = mid - 1
else:
start = mid + 1
return None

n = 5 #int(input())
n_list = [8, 3, 7, 9, 2] #list(map(int, input().split()))
n_list.sort()
m = 3 #int(input())
m_list = [5, 7, 9] #list(map(int, input().split()))


for i in m_list:
if find(n_list, i, 0, n - 1) != None:
print("yes", end=" ")
else:
print("no", end=" ")