[파이썬] 23968 알고리즘 수업 - 버블 정렬 1 n, k = map(int, input().split()) li = list(map(int, input().split())) for i in range(n - 1, 0, -1): for j in range(i): if li[j] > li[j + 1]: li[j], li[j + 1] = li[j + 1], li[j] k -= 1 if k == 0: print(f'{li[j]} {li[j + 1]}') exit() print(-1) 정렬 Algorithm/boj 2022.08.25
[파이썬] 1208 부분수열의 합 2 from itertools import combinations from bisect import bisect_left, bisect_right n, s = map(int, input().split()) li = list(map(int, input().split())) def find(li, s): return bisect_right(li, s) - bisect_left(li, s) def com(li): res = [] for i in range(1, len(li) + 1): for l in combinations(li, i): res.append(sum(l)) return sorted(res) left, right = li[:n // 2], li[n // 2:] com_left, com_right, =.. Algorithm/boj 2022.08.23
[파이썬] 1068 트리 n = int(input()) li = list(map(int, input().split())) tree = [[] for _ in range(n)] root, count = 0, 0 rm = int(input()) for i in range(len(li)): if li[i] == -1: root = i elif i == rm: continue else: tree[li[i]].append(i) def dfs(node): global count if tree[node] == []: count += 1 for t in tree[node]: dfs(t) if rm == root: print(0) else: dfs(root) print(count) dfs Algorithm/boj 2022.08.18
[파이썬] 17069 파이프 옮기기 2 n = int(input()) board = [list(map(int, input().split())) for _ in range(n)] dp = [[[0] * 3 for _ in range(n)] for _ in range(n)] dp[0][1][0] = 1 for i in range(n): for j in range(1, n): if board[i][j - 1] != 1: dp[i][j][0] += dp[i][j - 1][0] if i > 0: dp[i][j][0] += dp[i][j - 1][2] if board[i - 1][j] != 1: dp[i][j][1] += dp[i - 1][j][1] if i > 0: dp[i][j][1] += dp[i - 1][j][2] if i > 0 and not .. Algorithm/boj 2022.08.12
[파이썬] 16566 카드 게임 from bisect import bisect_left n, m, k = map(int, input().split()) li = sorted(list(map(int, input().split()))) check = [0] * m card = list(map(int, input().split())) for c in card: cur = bisect_left(li, c) while check[cur] or li[cur] Algorithm/boj 2022.08.10
[파이썬] 1007 벡터 매칭 from itertools import combinations import sys input = sys.stdin.readline def colsum(mat): res = [0, 0] for m in mat: res[0] += m[0] res[1] += m[1] return res t = int(input()) for _ in range(t): n = int(input()) li = [list(map(int, input().split())) for _ in range(n)] ans, s = 1e9, colsum(li) com = combinations(li, n // 2) for c in com: cur = colsum(list(c)) ans = min(ans, ((2 * cur[0] - s[0]) **.. Algorithm/boj 2022.08.09
[파이썬] 4889 안정적인 문자열 i = 0 while True: i += 1 try: cur = input() if '-' in cur: break stack, count = 0, 0 for c in cur: if c == '{': stack += 1 else: if stack >= 1: stack -= 1 else: count += 1 stack += 1 print(f'{i}. {count + stack // 2}') except: break stack Algorithm/boj 2022.08.08
[파이썬] 24484 알고리즘 수업 - 깊이 우선 탐색 6 import sys sys.setrecursionlimit(10 ** 8) input = sys.stdin.readline n, m, r = map(int, input().split()) graph = [[] for _ in range(n + 1)] visited = [[-1, 0] for _ in range(n + 1)] count = 1 for _ in range(m): x, y = map(int, input().split()) graph[x].append(y) graph[y].append(x) def dfs(node): global count graph[node].sort(reverse=True) for g in graph[node]: if visited[g][0] == -1: count += 1 .. Algorithm/boj 2022.08.05
[파이썬] 24483 알고리즘 수업 - 깊이 우선 탐색 5 import sys sys.setrecursionlimit(10 ** 8) input = sys.stdin.readline n, m, r = map(int, input().split()) graph = [[] for _ in range(n + 1)] visited = [[-1, 0] for _ in range(n + 1)] count = 1 for _ in range(m): x, y = map(int, input().split()) graph[x].append(y) graph[y].append(x) def dfs(node): global count graph[node].sort() for g in graph[node]: if visited[g][0] == -1: count += 1 visited[g] =.. 카테고리 없음 2022.08.05