diff --git a/백준/14938.py b/백준/14938.py new file mode 100644 index 0000000..5842608 --- /dev/null +++ b/백준/14938.py @@ -0,0 +1,36 @@ +import sys +from collections import deque + +input = sys.stdin.readline + +n, m, r = map(int, input().split()) #지역개수, 수색범위, 길의개수 +graph = [[sys.maxsize for _ in range(n+1)] for _ in range(n+1)] +t = list(map(int, input().split())) + +for _ in range(r): + a, b, l = map(int, input().split()) + graph[a-1][b-1] = l + graph[b-1][a-1] = l + +for i in range(n): + graph[i][i] = 0 + + +# 플로이드-워셜 근본식 그러나 다익스트라보단 구리지만 간단하게 +for i in range(n): + for j in range(n): + for k in range(n): + if (graph[k][j] > graph[k][i] + graph[i][j]): + graph[k][j] = graph[k][i] + graph[i][j] + +result = 0 + +for i in range(n): + sum_temp = 0 + for j in range(n): + if graph[i][j]<=m: + sum_temp += t[j] + if sum_temp>result: + result = sum_temp + +print(result) \ No newline at end of file diff --git a/백준/15286.py b/백준/15286.py new file mode 100644 index 0000000..c691746 --- /dev/null +++ b/백준/15286.py @@ -0,0 +1,31 @@ +import sys +from collections import defaultdict + +input = sys.stdin.readline + +N, K = map(int, input().split()) + +items = [] + +for _ in range(N): + W, V = map(int, input().split()) + items.append((W, V)) + +def promising(i): + if i<=K: + return True + else: + return False +thing = [0] * (K+1) + +for W, V in items: + for current_wieght in range(K, W-1 , -1): + thing[current_wieght] = max(thing[current_wieght], thing[current_wieght-W]+V) + +result = 0 + +for j in thing: + if (result < j) : + result = j + +print(result) diff --git a/백준/15686.py b/백준/15686.py new file mode 100644 index 0000000..14b8b84 --- /dev/null +++ b/백준/15686.py @@ -0,0 +1,41 @@ +import sys +from collections import deque + +input = sys.stdin.readline + +n, m = map(int, input().split()) +graph = [] +now_chicken = 0 +chicken_graph = [] +house_loc = [] +for _ in range(n): + temp_arr=list(map(int, input().split())) + now_chicken+=temp_arr.count(2) + graph.append(temp_arr) + +for i in range(n): + for j in range(n): + if(graph[i][j]==2): + chicken_graph.append((i, j)) + elif(graph[i][j]==1): + house_loc.append((i, j)) + +def BFS(start, graph): + queue = deque([start, 0]) + visited=set([start]) + while queue: + now_i, now_j, now_distance = queue.popleft() + for next_i, next_j in ((now_i+1, now_j), (now_i, now_j+1), (now_i-1, now_j), (now_i, now_j-1)): + if 0<=next_im: + + diff --git a/백준/16236.py b/백준/16236.py new file mode 100644 index 0000000..33c7449 --- /dev/null +++ b/백준/16236.py @@ -0,0 +1,60 @@ +import sys +from collections import deque +sys.setrecursionlimit(10**6) + +input = sys.stdin.readline + +n = int(input()) + +graph = [] +nx = [0, -1, 0, 1] +ny = [1, 0, -1, 0] + +tot_feed = 0 +result = 0 +now_size = 2 + +for _ in range(n): + graph.append(list(map(int, input().split()))) + +for i in range(n): + for j in range(n): + if graph[i][j] == 9 : + now_loc = (i, j) + time_loc = (i, j, 0) + elif graph[i][j] != 0: + tot_feed += 1 + +visited = set(now_loc) +q = deque() +q.append(time_loc) + +while q and tot_feed>0: + x, y, time = q.popleft() + for i in range(4): + dx = x + nx[i] + dy = y + ny[i] + if 0<=dx0: + dp_table[i][j][2] += dp_table[i][j-1][0] + dp_table[i][j-1][2] + if i>0: + dp_table[i][j][1] += dp_table[i-1][j][0] + dp_table[i-1][j][1] + if i>0 and j>0: + if graph[i-1][j] == 0 and graph[i][j-1] == 0: + dp_table[i][j][0] += dp_table[i-1][j-1][0] + dp_table[i-1][j-1][1] + dp_table[i-1][j-1][2] + + +print(dp_table[n-1][n-1][0] + dp_table[n-1][n-1][1] + dp_table[n-1][n-1][2]) \ No newline at end of file