백준 4796 | 그리디 | 캠핑 [파이썬 python]
·
Algorithm/백준
4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 코드 i = 1 while True: l, p, v = map(int, input().split()) if p==0 and l==0 and v==0: # 0, 0, 0이 입력되면 반복문 종료 break camping = (l * (v // p)) + min((v % p), l) # 캠핑장을 사용할 수 있는 최대 일수 print('Case {}:'.format(i), camping) i += 1 쉬운 문제인 줄 알고 달려들었다가 '틀렸습니다!'를 계속 만나게..
백준 2805 | 이진탐색 | 나무 자르기 [파이썬 python]
·
Algorithm/백준
2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 코드 n, m = map(int, input().split()) tree = list(map(int, input().split())) # 이진 탐색을 위한 시작점, 끝점 start = 0 end = max(tree) result = 0 # 최종 절단기 높이 while(start mid: # 절단기보다 주어진 나무가 길면 자른 나머지를 total에 추가 total += i - mid # 이진 탐색 if total < m: #..
백준 1920 | 이진탐색 | 수 찾기 [파이썬 python]
·
Algorithm/백준
1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 코드 # 이진 탐색 함수(재귀적 구현) def binary_search(array, target, start, end): if start > end: return None mid = (start + end) // 2 # 중간점 if array[mid] == target: # target을 찾았으면 리턴 return mid elif array[mid] > target: # target이 중간점보다 작으면 왼쪽부분 탐..