practivceAlgorithm 570

[백준][Python] 14945 불장난

dp[층수][둘사이 거리]의 경우의 수로 계산. 거리가 그대로일 경우 둘(아래아래, 대각,대각) 거리가 줄경우 하나(대각아래) 거리가 늘경우 하나(아래대각) 거리가 0인경우는 그냥 배제 import sys input = sys.stdin.readline n = int(input()) dp = [[0]*(n+1) for _ in range(n+1)] dp[2][1] = 2 for i in range(3,n+1): for j in range(1,i): dp[i][j] = (dp[i-1][j]*2 + dp[i-1][j-1] + dp[i-1][j+1])%10007 sum_n = 0 for i in range(1,n): sum_n += dp[n][i] print(sum_n%10007)

[백준][Python] 1541 잃어버린 괄호

처음에 dfs하려다 숫자 처리하기 귀찮아서 그냥 단계별로 파싱함. eval쓸수있었으면 4줄로 끝나는데 0으로 시작하는 숫자있어서 int처리 해줘야함. import sys input = sys.stdin.readline # eval쓸라그랬는데 0으로 시작하는 숫자있어서 실패.. expression = input().split('-') new_expression = [] for ex in expression: nums = ex.split('+') sum_n = 0 for num in nums: sum_n += int(num) new_expression.append(sum_n) print(2*new_expression[0] - sum(new_expression))

[백준][Python] 1389 케빈 베이컨의 6단계 법칙

대놓고 플로이드 워셜이라 풀었는데 카테고리는 bfs.. bfs로 풀수있나? import sys input = sys.stdin.readline # 플로이드 워셜 탐색 N, M = map(int, input().split()) graph = [[float('inf') for _ in range(N+1)] for _ in range(N+1)] for _ in range(M): a, b = map(int, input().split()) graph[a][b] = 1 graph[b][a] = 1 for k in range(1,N+1): graph[k][k] = 0 for i in range(1,N+1): for j in range(1,N+1): if graph[i][j] > graph[i][k] + graph[k..

[백준][Python] 18352 특정거리의 도시찾기

다익스트라로 찾습니다. 최소거리는 늘 다익스트라 import sys input = sys.stdin.readline from collections import deque def dijkstra(start): queue = deque() queue.append([0,start]) visited = {i: float('inf') for i in range(1,N+1)} visited[start] = 0 while queue: cur_dist,cur_node = queue.popleft() for next in graph[cur_node]: if visited[next] > cur_dist+1: visited[next] = cur_dist+1 queue.append([visited[next], next]) r..