[파이썬] 3079 입국심사 import sys input = sys.stdin.readline n, m = map(int, input().split()) li = [int(input()) for _ in range(n)] left = 1 right = ans = max(li) * m while left = m: right = mid - 1 ans = min(ans, mid) else: left = mid + 1 print(ans) 이분탐색 Algorithm/boj 2022.09.08
[파이썬] 2792 보석 상자 import sys input = sys.stdin.readline from math import ceil n, m = map(int, input().split()) li = [int(input()) for _ in range(m)] left = 1 right = ans = max(li) while left Algorithm/boj 2022.09.07
문자열 압축 ( Level 2, Python, 2020 Kakao Blind Recruitment ) def solution(s): ans = 10000 for i in range(1, len(s) // 2 + 1): temp = '' li = [s[j:j + i] for j in range(0, len(s), i)] prev, count, temp = li[0], 1, '' for l in li[1:]: if prev == l: count += 1 else: temp += str(count) + prev if count > 1 else prev count = 1 prev = l temp += str(count) + prev if count > 1 else prev ans = min(ans, len(temp)) return ans if len(s) != 1 else 1 문자열 Algorithm/programmers 2022.09.07
합승 택시 요금 ( Level 3, Python, 2021 Kakao Blind Recruitment ) def solution(n, s, a, b, fares): INF = int(1e9) graph = [[0 if i == j else INF for i in range(n + 1)] for j in range(n + 1)] for f in fares: x, y, z = f graph[x][y] = graph[y][x] = z for k in range(1, n + 1): for x in range(1, n + 1): for y in range(1, n + 1): graph[x][y] = min(graph[x][y], graph[x][k] + graph[k][y]) ans = graph[s][a] + graph[s][b] for i in range(1, n + 1): ans = min(ans, graph[.. Algorithm/programmers 2022.09.06
[파이썬] 1275 커피숍2 import sys input = sys.stdin.readline def init(start, end, index): if start == end: tree[index] = li[start] return tree[index] mid = (start + end) // 2 tree[index] = init(start, mid, index * 2) + init(mid + 1, end, index * 2 + 1) return tree[index] def interval_sum(start, end, index, left, right): if left > end or right < start: return 0 if left = end: return tree[index] mid = (start + end) // 2.. Algorithm/boj 2022.09.06
[파이썬] 2357 최솟값과 최댓값 import sys input = sys.stdin.readline n, m = map(int, input().split()) li = [int(input()) for _ in range(n)] tree = [[1000000000, 1] for _ in range(4 * n)] def init(start, end, index): if start == end: tree[index] = [li[start], li[start]] return tree[index] mid = (start + end) // 2 l, r = init(start, mid, index * 2), init(mid + 1, end, index * 2 + 1) tree[index] = [min(l[0], r[0]), max(l[1], r[1.. Algorithm/boj 2022.09.05
[파이썬] 11505 구간 곱 구하기 import sys input = sys.stdin.readline n, m, k = map(int, input().split()) li = [int(input()) for _ in range(n)] tree = [0] * 4 * n def init(start, end, index): if start == end: tree[index] = li[start] return tree[index] mid = (start + end) // 2 tree[index] = (init(start, mid, index * 2) * init(mid + 1, end, index * 2 + 1)) % 1000000007 return tree[index] def interval_prod(start, end, index, left.. Algorithm/boj 2022.09.05
[파이썬] 2042 구간 합 구하기 import sys input = sys.stdin.readline n, m, k = map(int, input().split()) li = [int(input()) for _ in range(n)] tree = [0] * 4 * n def init(start, end, index): if start == end: tree[index] = li[start] return tree[index] mid = (start + end) // 2 tree[index] = init(start, mid, index * 2) + init(mid + 1, end, index * 2 + 1) return tree[index] def interval_sum(start, end, index, left, right): if lef.. Algorithm/boj 2022.09.05
[파이썬] 24174 알고리즘 수업 - 힙 정렬 2 def heap_sort(li, n): global count build_min_heap(li, n); for i in range(n, 1, -1): li[1], li[i] = li[i], li[1] count += 1 if count == K: print(*li[1:]) exit() heapify(li, 1, i - 1); def build_min_heap(li, n): for i in range(n // 2, 0, -1): heapify(li, i, n) def heapify(li, k, n): global count left, right = 2 * k, 2 * k + 1 if right Algorithm/boj 2022.09.02
[파이썬] 24173 알고리즘 수업 - 힙 정렬 1 def heap_sort(li, n): global count build_min_heap(li, n); for i in range(n, 1, -1): li[1], li[i] = li[i], li[1] count += 1 if count == K: print(li[i], li[1]) exit() heapify(li, 1, i - 1); def build_min_heap(li, n): for i in range(n // 2, 0, -1): heapify(li, i, n) def heapify(li, k, n): global count left, right = 2 * k, 2 * k + 1 if right Algorithm/boj 2022.09.02