이진 탐색 알고리즘 Q www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net A 이진 탐색 알고리즘 공부한 내용 중 실전 문제 떡볶이 떡 자르기와 동일한 유형이다. target이 될 값이 없을 때에는 def가 아니라 while과 if를 이용해서 풀자. 코드 n, m = map(int, input().split()) #정수 입력받기 array = list(map(int, input().split())) #떡 개별 높이 입력받기..
이진 탐색 알고리즘 Q www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net A 이진 탐색 알고리즘과 이중반복문 두가지 방법으로 풀었다. 다만, 이중반복문의 경우 시간초과 가능성이 높다. 1) 이진 탐색 알고리즘 코드 n = int(input()) array = list(map(int, input().split())) m = int(input()) target_list = list(map(int, input().sp..
Q www.acmicpc.net/problem/13706 13706번: 제곱근 첫째 줄에 양의 정수 N이 주어진다. 정수 N의 제곱근은 항상 정수이며, N의 길이는 800자리를 넘지 않는다. www.acmicpc.net A n = int(input()) #정수 입력 import math print(math.isqrt(n)) #sqrt 사용시 overflowerror가 발생한다. 따라서 isqrt 사용하였다.
그리디 알고리즘 Q www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net A 리스트를 오름차순으로 정렬하여 가장 뒤에 있는 큰 수를 기준으로 판단한다. n = int(input()) #입력받기 data = list(int(input()) for _ in range(n)) #여러 줄의 하나의 숫자를 리스트로 입력받기 data.sort() #오름차순으로 정렬 result = 0 for i in range(n): if data[-1]