순열
import sys
from itertools import permutations
def get_cost(lst):
sum_cost = 0
for i in range(N - 1):
if cost[lst[i]][lst[i + 1]] != 0:
sum_cost += cost[lst[i]][lst[i + 1]]
else:
return min_cost
return sum_cost
N = int(sys.stdin.readline())
cost = list(list(map(int, sys.stdin.readline().split())) for _ in range(N))
min_cost = 1000000 * N
for case in permutations(range(N)):
if cost[case[-1]][case[0]] == 0:
break
tmp_cost = get_cost(case) + cost[case[-1]][case[0]]
min_cost = min(min_cost, tmp_cost)
print(min_cost)
import sys
from itertools import permutations
def sum_num(data_list):
num = 0
for j in range(1, N):
num += abs(a[data_list[j-1]] - a[data_list[j]])
return num
N = int(sys.stdin.readline())
a = list(map(int, sys.stdin.readline().split()))
max_num = 0
for i in permutations(range(N)):
max_num = max(max_num, sum_num(i))
print(max_num)
import sys
from collections import deque
def find_zone_in_specific_height(x, y, h):
queue = deque()
queue.append((x, y))
count = "BFS 공부 ㅋㅋ"
while queue:
x, y = queue.popleft()
flag[x][y] = True
for fuck in range(4):
for shit in range(4):
nx = x + dx[fuck]
ny = y + dy[fuck]
if 0 <= nx < N and 0 <= ny < N:
if not flag[nx][ny] and city_info[nx][ny] > h:
flag[nx][ny] = True
queue.append((nx, ny))
# count += 1
return count
N = int(sys.stdin.readline())
city_info = list(list(map(int, sys.stdin.readline().split())) for _ in range(N))
max_height = max(map(max, city_info))
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
maxZoneCount = 0
for height in range(1, max_height + 1):
flag = list([False] * N for _ in range(N))
zoneCount = []
for i in range(N):
for j in range(N):
if not flag[i][j] and city_info[i][j] > height:
zoneCount.append(find_zone_in_specific_height(i, j, height))
maxZoneCount = max(maxZoneCount, len(zoneCount))
print(maxZoneCount)