Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions cmkim/BaekJoon/백준_1939.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
n, m = map(int, input().split())

arr = [[] for _ in range(n+1)]

for i in range(m):
a, b, c = map(int, input().split())
arr[a].append([b, c])
arr[b].append([a, b])

for i in range(1, n+1):
print(arr[i])

start, end = map(int, input().split())


# 플로이드 워셜 반대로?
# for m in range(1, n+1):
# for s in range(1, n+1):
# for e in range(1, n+1):
# if d[s][e] > d[s][m] + d[m][e]:
# d[s][e] = d[s][m] + d[m][e]


#print(d)
28 changes: 28 additions & 0 deletions cmkim/BaekJoon/백준_5972.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import sys
import heapq
INF = 1e9
n, m = map(int, input().split())
arr = [[] * (n+1) for _ in range(n+1)]
dis = [INF] * (n+1)

for _ in range(m):
a, b, c = map(int, input().split())
arr[a].append((b, c))
arr[b].append((a, c))

def dijkstra(start):
q = []
heapq.heappush(q, (0, start)) #비용, 출발점
dis[start] = 0
while q:
d, now = heapq.heappop(q)
if dis[now] < d:
continue
for v, w in arr[now]: # 가려는 곳에대한 위치, 비용
cost = d + w
if cost < dis[v]:
dis[v] = cost
heapq.heappush(q, (cost, v))

dijkstra(1)
print(dis[n])
Empty file.
20 changes: 15 additions & 5 deletions cmkim/Programmers/스택_큐/다리를 지나는 트럭.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
def solution(bridge_length, weight, truck_weights):
time = 0
on_bridge = []
on_time = []

answer = 0
while(truck_weights or on_bridge) :
time += 1

if(on_time) :
if(on_time[0] + bridge_length == time) :
on_bridge.pop(0)
on_time.pop(0)
if(truck_weights) :
if(sum(on_bridge) + truck_weights[0] <= weight) :
on_bridge.append(truck_weights.pop(0))
on_time.append(time)


return answer

return time
'''
트럭 무게를 정렬할 필요는 없고
그냥 순서대로
아 무조건 정해진 순서대로 가야한다..
'''

91 changes: 91 additions & 0 deletions cmkim/이것이 취업을 위한 코딩 테스트다/뱀_327p.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
n = int(input())
k = int(input())

arr = [[0]*n for _ in range(n+1)]
order = []
count = 0
dir = 0

for i in range(k):
a, b = map(int, input().split())
arr[a][b] = 1

l = int(input())

for i in range(l):
# x = int(input().split())
# c = input()
x, c = input().split()
order.append((int(x), c))

# for i in range(n):
# print(arr[i])
# print(order)
# order.pop()
#print(order)

#오른쪽 볼때 좌, 우 회전 순서는 각각 우 상 좌 하 / 우 하 좌 상
#왼쪽 '' 좌 하 우 상 / 좌 상 우 하

dx = [0, -1, 0, 1] #우 상 좌 하
dy = [1, 0, -1, 0]

x, y = 1, 1
q = [(x, y)]

while True:
count += 1

arr[x][y] = 2



nx = x + dx[dir]
ny = y + dy[dir]

if 1 <= nx <= n and 1 <= ny <= n and arr[nx][ny] != 2:
if arr[nx][ny] == 0:
arr[nx][ny] = 2
q.append((nx, ny))
ex, ey = q.pop(0)
arr[ex][ey] = 0

elif arr[nx][ny] == 1:
arr[nx][ny] = 2
q.append((nx, ny))

x, y = nx, ny

else:
break

if count == order[0][0]:
if order[0][1] == 'L': #왼쪽회전
dir = (dir+1) % 4
else: #오른쪽회전
dir = (dir+3) % 4

order.pop()

print(count)










'''
6
3
3 4
2 5
5 3
3
3 D
15 L
17 D
'''
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
from itertools import combinations
n, m = map(int, input().split())

arr = []
chicken = []
home = []

for i in range(n):
temp = list(map(int, input().split()))
for j in range(n):
if temp[j] == 1:
home.append((i, j))
elif temp[j] == 2:
chicken.append((i, j))

m_chicken = list(combinations(chicken, m))

def get_sum(candidate):
result = 0
for hx, hy in home:
temp = 1e9
for cx, cy in candidate:
temp = min(temp, abs(hx - cx) + abs(hy - cy))
result += temp
return result

result = 1e9
for i in m_chicken:
result = min(result, get_sum(i))


print(result)

'''
5 3
0 0 1 0 0
0 0 2 0 1
0 1 2 0 0
0 0 1 0 0
0 0 0 0 2
'''