Skip to content

Commit f2fb5d8

Browse files
committed
찬민 백준숙제
1 parent c316b56 commit f2fb5d8

File tree

2 files changed

+96
-13
lines changed

2 files changed

+96
-13
lines changed

cmkim/BaekJoon/백준_1939.py

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,50 @@
1+
# 처음엔 플로이드워셜 알고리즘을 사용하는 줄 알았는데
2+
# 플로이드 워셜은 최솟값 구할때만 해당하는듯
3+
# 이 문제는 이때동안 풀었던 유형이랑 좀 다른게
4+
# 노드를 탐색해 나가며 최대 중량을 찾아 나가는게 아니라
5+
# 최대 중량을 설정하고 이게 되는지 안되는지 판단해야됌
6+
# 원래가 바텀업방식이라면 이건 탑다운 방식? 이 개념이 맞는지는 잘 모르겠다.
7+
import sys
8+
from _collections import deque
19
n, m = map(int, input().split())
210

11+
def bfs(mid):
12+
13+
q = deque()
14+
q.append(start_point)
15+
visited[start_point] = 1
16+
17+
while q:
18+
start = q.popleft()
19+
if start == end_point:
20+
return True
21+
for n_node, n_cost in arr[start]:
22+
if visited[n_node] == 0 and mid <= n_cost:
23+
q.append(n_node)
24+
visited[n_node] = 1
25+
return False
26+
27+
328
arr = [[] for _ in range(n+1)]
429

530
for i in range(m):
631
a, b, c = map(int, input().split())
7-
arr[a].append([b, c])
8-
arr[b].append([a, b])
9-
10-
for i in range(1, n+1):
11-
print(arr[i])
32+
arr[a].append((b, c))
33+
arr[b].append((a, c))
1234

13-
start, end = map(int, input().split())
35+
start_point, end_point = map(int, input().split())
1436

1537

16-
# 플로이드 워셜 반대로?
17-
# for m in range(1, n+1):
18-
# for s in range(1, n+1):
19-
# for e in range(1, n+1):
20-
# if d[s][e] > d[s][m] + d[m][e]:
21-
# d[s][e] = d[s][m] + d[m][e]
38+
left, right = 1, 1e9
39+
result = 0
2240

41+
while left <= right:
42+
visited = [0 for _ in range(n + 1)]
43+
mid = (left + right) // 2
44+
if bfs(mid): #중량이 통과했을때
45+
left = mid + 1
46+
result = mid
47+
else: #중량 통과 못했을때
48+
right = mid - 1
2349

24-
#print(d)
50+
print(int(result))

cmkim/BaekJoon/백준_2469.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
2+
k = int(input())
3+
n = int(input())
4+
5+
6+
7+
start = list(map(chr, range(65, 65+k)))
8+
mid = []
9+
end = []
10+
end = list(map(str, input().strip()))
11+
12+
arr = []
13+
14+
for i in range(n):
15+
temp = list(map(str, input().strip()))
16+
if temp[0] == '?':
17+
q_mark = i
18+
arr.append(temp)
19+
20+
21+
# for i in range(n):
22+
# print(arr[i])
23+
24+
for i in range(0, q_mark):
25+
for j in range(k-1):
26+
if arr[i][j] == '-':
27+
tempc = start[j]
28+
start[j] = start[j+1]
29+
start[j+1] = tempc
30+
31+
for i in range(n-1, q_mark, -1):
32+
for j in range(k-1):
33+
if arr[i][j] == '-':
34+
tempc = end[j]
35+
end[j] = end[j+1]
36+
end[j+1] = tempc
37+
38+
# print(start)
39+
# print(end)
40+
41+
for i in range(k-1):
42+
if start[i] != end[i]:
43+
if start[i] == end[i+1] and start[i+1] == end[i]:
44+
mid.append('-')
45+
tempc = start[i]
46+
start[i] = start[i + 1]
47+
start[i + 1] = tempc
48+
else:
49+
for finish in range(k-1):
50+
print('x', end='')
51+
52+
quit()
53+
else:
54+
mid.append('*')
55+
56+
for i in range(k-1):
57+
print(mid[i], end='')

0 commit comments

Comments
 (0)