Algorithm/BOJ133 [백준] 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. [백준] 3109번 - 빵집 (파이썬) # 빵집 import sys input = sys.stdin.readline N, M = map(int, input().split()) arr = [] for _ in range(N): arr.append(list(input().strip())) dx = [-1, 0, 1] dy = [1, 1, 1] def pipe(x, y): global result arr[x][y] = 'o' if y == M-1: result += 1 return True for k in range(3): nx = x + dx[k] ny = y + dy[k] if 0 2022. 2. 18. [백준] 2357번 - 최솟값과 최댓값 (파이썬) # 최솟값과 최댓값 import sys input = sys.stdin.readline MAX = sys.maxsize N, M = map(int, input().split()) arr = [0] for _ in range(N): arr.append(int(input())) tree = [[MAX, 0] for _ in range(N+1)] tree2 = [[MAX, 0] for _ in range(N+1)] def update(i, target): while i 0: tree2[i][0] = min(tree2[i][0], target) tree2[i][1] = max(tree2[i][1], target) i -= (i & -i) def find(start, end): result_min = MAX re.. 2022. 2. 13. [백준] 10868번 - 최솟값 (파이썬) # 최솟값 import sys input = sys.stdin.readline MAX = sys.maxsize N, M = map(int, input().split()) arr = [0] for _ in range(N): arr.append(int(input())) def update(i, target): while i 0: update(i, x) update2(i, x) for _ in range(M): start, end = map(int, input().split()) print(find(start, end)) 자료구조, 펜윅트리 1. 입력을 받고 트리를 두 가지를 할당해준다. 2. 초기값을 이용해서 펜윅트리를 업데이트해준다. - update : 앞에서 뒤로 펜윅트리를 만든다. - update2 :.. 2022. 2. 13. [백준] 2042번 - 구간 합 구하기 (파이썬) # 구간 합 구하기 import sys input = sys.stdin.readline N, M, K = map(int, input().split()) arr = [0] for _ in range(N): arr.append(int(input())) tree = [0] * (N+1) def update(i, diff): while i 0: result += tree[i] i -= (i & -i) return result def print_sum(start, end): print(fromOne_sum(end) - fromOne_sum(start-1)) for i, x in enumerate(arr): if i > 0: update(i, x) for _ in range(M+K): type, a, b = map.. 2022. 2. 12. [백준] 16637번 - 괄호 추가하기 (파이썬) # 괄호 추가하기 import copy import sys input = sys.stdin.readline MAX = sys.maxsize N = int(input()) arr = input().strip() nums = [] op = [] for i, x in enumerate(arr): if i % 2 == 0: nums.append(x) else: op.append(x) def calculate(a, op, b): return str(eval(a+op+b)) def calculate_front(arr): result = arr[0] for i in range(1, len(arr)-1, 2): result = calculate(result, arr[i], arr[i+1]) return result d.. 2022. 2. 12. 이전 1 ··· 7 8 9 10 11 12 13 ··· 19 다음