From 2d9463268037ed38a4bb17e0b3b36a149d31a65b Mon Sep 17 00:00:00 2001 From: Youjiiin Date: Thu, 18 Jan 2024 16:17:44 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B4=EC=A7=84=20=ED=83=90=EC=83=89=5F?= =?UTF-8?q?=EC=9C=A0=EC=A7=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\354\234\240\354\247\204.py" | 32 +++++++++++++++++++ .../\354\234\240\354\247\204.py" | 23 +++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 "\354\235\264\354\275\224\355\205\214/07 \354\235\264\354\247\204 \355\203\220\354\203\211/\353\226\241\353\263\266\354\235\264_\353\226\241_\353\247\214\353\223\244\352\270\260/\354\234\240\354\247\204.py" create mode 100644 "\354\235\264\354\275\224\355\205\214/07 \354\235\264\354\247\204 \355\203\220\354\203\211/\353\266\200\355\222\210\354\260\276\352\270\260/\354\234\240\354\247\204.py" diff --git "a/\354\235\264\354\275\224\355\205\214/07 \354\235\264\354\247\204 \355\203\220\354\203\211/\353\226\241\353\263\266\354\235\264_\353\226\241_\353\247\214\353\223\244\352\270\260/\354\234\240\354\247\204.py" "b/\354\235\264\354\275\224\355\205\214/07 \354\235\264\354\247\204 \355\203\220\354\203\211/\353\226\241\353\263\266\354\235\264_\353\226\241_\353\247\214\353\223\244\352\270\260/\354\234\240\354\247\204.py" new file mode 100644 index 0000000..5c55d15 --- /dev/null +++ "b/\354\235\264\354\275\224\355\205\214/07 \354\235\264\354\247\204 \355\203\220\354\203\211/\353\226\241\353\263\266\354\235\264_\353\226\241_\353\247\214\353\223\244\352\270\260/\354\234\240\354\247\204.py" @@ -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))) \ No newline at end of file diff --git "a/\354\235\264\354\275\224\355\205\214/07 \354\235\264\354\247\204 \355\203\220\354\203\211/\353\266\200\355\222\210\354\260\276\352\270\260/\354\234\240\354\247\204.py" "b/\354\235\264\354\275\224\355\205\214/07 \354\235\264\354\247\204 \355\203\220\354\203\211/\353\266\200\355\222\210\354\260\276\352\270\260/\354\234\240\354\247\204.py" new file mode 100644 index 0000000..aa2c529 --- /dev/null +++ "b/\354\235\264\354\275\224\355\205\214/07 \354\235\264\354\247\204 \355\203\220\354\203\211/\353\266\200\355\222\210\354\260\276\352\270\260/\354\234\240\354\247\204.py" @@ -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=" ") \ No newline at end of file