본문 바로가기

bisect7

[백준] 9007번 - 카누 선수 (파이썬) # 카누 선수 import sys input = sys.stdin.readline T = int(input()) for _ in range(T): k, n = map(int, input().split()) arr = [] for _ in range(4): arr.append(list(map(int, input().split()))) one, two = set(), set() for idx in range(0, 4, 2): for x in arr[idx]: for y in arr[idx+1]: one.add(x+y) if idx == 0 else two.add(x+y) one = sorted(list(one)) two = sorted(list(two)) # 투포인터 result = 0 diff = sys... 2022. 4. 8.
[백준] 3151번 - 합이 0 (파이썬) # 합이 0 from bisect import bisect_left N = int(input()) arr = list(map(int, input().split())) arr.sort() answer = 0 for i in range(len(arr)-2): left, right = i+1, N-1 while left 0: right -= 1 else: if result == 0: if arr[left] == arr[right]: answer += right - left else: idx = bisect_left(arr, arr[right]) answer += right-idx+1 left += 1 pri.. 2022. 4. 8.
[백준] 1365번 - 꼬인 전깃줄 (파이썬) # 꼬인 전깃줄 import bisect N = int(input()) arr = list(map(int, input().split())) result = [arr[0]] for i in range(1, len(arr)): index = bisect.bisect_left(result, arr[i]) if index == len(result): result.append(arr[i]) else: result[index] = arr[i] print(len(arr)-len(result)) 이분탐색, bisect 1. 입력을 받는다. 2. result 리스트 선언 3. arr의 각 원소마다 - result가 비었으면 append - bisect_left로 result에 x가 들어갈 인덱스를 구한다. - index.. 2022. 4. 5.
[백준] 2143번 - 두 배열의 합 (파이썬) # 두 배열의 합 import sys import bisect input = sys.stdin.readline K = int(input()) N = int(input()) A = list(map(int, input().split())) M = int(input()) B = list(map(int, input().split())) sum_A = [] for i in range(N): sum = 0 for j in range(i, N): sum += A[j] sum_A.append(sum) sum_B = [] for i in range(M): sum = 0 for j in range(i, M): sum += B[j] sum_B.append(sum) result = 0 sum_B.sort() for sum_a.. 2022. 2. 18.
[백준] 2352번 - 반도체 설계 (파이썬) # 반도체 설계 import sys import bisect input = sys.stdin.readline N = int(input()) port = list(map(int, input().split())) result = [port[0]] for x in range(1, N): if port[x] > result[-1]: result.append(port[x]) else: index = bisect.bisect_left(result, port[x]) result[index] = port[x] print(len(result)) 이진탐색, bisec 1. 입력을 받고 port의 첫번째 값을 result에 추가 2. 남은 port의 값중에서 - result의 마지막 값보다 크면 append - result.. 2022. 2. 18.
[백준] 12738번 - 가장 긴 증가하는 부분 수열 3 (파이썬) # 가장 긴 증가하는 부분 수열 3 import sys import bisect input = sys.stdin.readline N = int(input()) arr = list(map(int, input().split())) result = [arr[0]] for i in range(1, N): if arr[i] > result[-1]: result.append(arr[i]) else: index = bisect.bisect_left(result, arr[i]) result[index] = arr[i] print(len(result)) 이진탐색, bisect 1. 전체 리스트를 돌면서 - result의 마지막 원소보다 크면 append를 해준다 - 작으면 bisect_left를 이용하여 해당 인덱스의 .. 2022. 2. 7.
[백준] 12015번 - 가장 긴 증가하는 부분 수열 2 (파이썬) # 가장 긴 증가하는 부분 수열 2 import sys import bisect input = sys.stdin.readline N = int(input()) arr = list(map(int, input().split())) result = [] result.append(arr[0]) for i in range(1, N): if arr[i] > result[-1]: result.append(arr[i]) else: index = bisect.bisect_left(result, arr[i]) result[index] = arr[i] print(len(result)) 이진탐색, bisect 1. 전체 리스트를 돌면서 - result의 마지막 원소보다 크면 append를 해준다 - 작으면 bisect_lef.. 2022. 1. 27.