[파이썬] 10815 숫자 카드 n = int(input()) li = sorted(list(map(int, input().split()))) m = int(input()) s = list(map(int, input().split())) def search(x, s, e): while s x: e = mid - 1 else: s = mid + 1 return 0 print(*list(map(lambda x: search(x, 0, n - 1), s))) 이분탐색 Algorithm/boj 2022.05.24
[파이썬] 17144 미세먼지 안녕! r, c, t = list(map(int, input().split())) board = [] cleaner = [] dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] for i in range(r): cur = list(map(int, input().split())) for j in range(c): if cur[j] == -1: cleaner.append([i, j]) board.append(cur) def diffusion(b): res = [[0] * c for _ in range(r)] [x1, y1], [x2, y2] = cleaner res[x1][y1] = res[x2][y2] = -1 for x in range(r): for y in range(c): if b[x][y].. Algorithm/boj 2022.05.23
[파이썬] 14938 서강그라운드 n, m, r = map(int, input().split()) INF = int(1e9) item = [0] + list(map(int, input().split())) graph = [[0 if i == j else INF for i in range(n + 1)] for j in range(n + 1)] for _ in range(r): a, b, c = map(int, input().split()) graph[a][b] = graph[b][a] = c for k in range(1, n + 1): for a in range(1, n + 1): for b in range(1, n + 1): graph[a][b] = graph[b][a] = min(graph[a][b], graph[a][k] + gra.. Algorithm/boj 2022.05.22
[파이썬] 2096 내려가기 import sys input = sys.stdin.readline n = int(input()) first = list(map(int, input().split())) dp1, dp2 = first[:], first[:] for _ in range(n - 1): cur = list(map(int, input().split())) temp00 = cur[0] + max(dp1[0], dp1[1]) temp10 = cur[0] + min(dp2[0], dp2[1]) temp01 = cur[1] + max(dp1[0], dp1[1], dp1[2]) temp11 = cur[1] + min(dp2[0], dp2[1], dp2[2]) temp02 = cur[2] + max(dp1[1], dp1[2]) temp12.. Algorithm/boj 2022.05.21
[파이썬] 1238 파티 import heapq import sys input = sys.stdin.readline INF = int(1e9) n, m, x = map(int, input().split()) graph = [[] for i in range(n + 1)] for _ in range(m): a, b, c = map(int, input().split()) graph[a].append((b, c)) def dijkstra(start): q = [] heapq.heappush(q, (0, start)) distance[start] = 0 while q: dist, now = heapq.heappop(q) if distance[now] < dist: continue for i in graph[now]: cost = dist.. Algorithm/boj 2022.05.21
[파이썬] 3036 링 n = int(input()) li = list(map(int, input().split())) def gcd(a, b): while b > 0: n = a % b a, b = b, n return a for i in range(1, n): g = gcd(li[0], li[i]) print(f'{li[0]//g}/{li[i]//g}') 유클리드 호제법 Algorithm/boj 2022.05.20
[파이썬] 12851 숨바꼭질 2 from collections import deque n, k = map(int, input().split()) q = deque([[n, 0]]) visited = [0] * 100001 ans = [100000, 0] while q: x, c = q.popleft() visited[x] = 1 if x == k: if ans[0] > c: ans = [c, 1] elif ans[0] == c: ans[1] += 1 continue if 2 * x = 0 and.. Algorithm/boj 2022.05.16
[파이썬] 2206 벽 부수고 이동하기 from collections import deque n, m = map(int, input().split()) board = [list(map(int, list(input()))) for _ in range(n)] visited = [[[0] * 2 for _ in range(m)] for _ in range(n)] visited[0][0][0] = 1 dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] q = deque([[0, 0, 0]]) while q: x, y, b = q.popleft() if x == n - 1 and y == m - 1: print(visited[x][y][b]) exit() for i in range(4): nx, ny = x + dx[i], y + dy.. Algorithm/boj 2022.05.14
[파이썬] 1504 특정한 최단 경로 import heapq import sys input = sys.stdin.readline INF = int(1e9) n, e = map(int, input().split()) graph = [[] for _ in range(n + 1)] for _ in range(e): a, b, c = map(int, input().split()) graph[a].append((b, c)) graph[b].append((a, c)) v1, v2 = map(int, input().split()) def dijkstra(start): q = [] distance = [INF] * (n + 1) heapq.heappush(q, (0, start)) distance[start] = 0 while q: dist, now = .. Algorithm/boj 2022.05.13
[파이썬] 12852 1로 만들기 2 n = int(input()) dp = [[0, []] for _ in range(n + 1)] for i in range(2, n + 1): dp[i][0] = dp[i - 1][0] + 1 dp[i][1] = dp[i - 1][1] + [i] if i % 3 == 0 and dp[i // 3][0] + 1 < dp[i][0]: dp[i][0] = dp[i // 3][0] + 1 dp[i][1] = dp[i // 3][1] + [i] if i % 2 == 0 and dp[i // 2][0] + 1 < dp[i][0]: dp[i][0] = dp[i // 2][0] + 1 dp[i][1] = dp[i // 2][1] + [i] print(dp[-1][0]) print(*(dp[-1][1][::-1] + [.. Algorithm/boj 2022.05.09