Skip to content

Commit e04ca8a

Browse files
committed
1 parent 13ad0dc commit e04ca8a

File tree

2 files changed

+62
-0
lines changed

2 files changed

+62
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
"""
2+
# 계수 정렬 idea 적용
3+
"""
4+
5+
def solution(topping):
6+
answer = 0 # 공평하게 자를 수 있는 경우의 수
7+
# 0, graph
8+
forward = set()
9+
backward = dict()
10+
# 1. key 종류, value: toppping 중복 개수
11+
for t in topping:
12+
backward[str(t)]= backward.get(str(t),0)
13+
backward[str(t)] += 1
14+
print(backward)
15+
#2. forward vs backward
16+
for t in topping :
17+
# f 에서 t가 추가됨 == b에서 t 빠짐
18+
forward.add(t)
19+
backward[str(t)] -=1
20+
if backward[str(t)] == 0 :
21+
del backward[str(t)]
22+
23+
# 토핑 종류 같은 경우 = 공평 한 경우
24+
if len(forward) == len(backward.keys()):
25+
answer+=1
26+
27+
return answer
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
INF = int(1e9) #무한을 나타내는 갑스올 10억 설정
2+
3+
# 노드 개수 & 간선의 개수 입력
4+
n = int(input())
5+
m = int(input())
6+
#1. graph 설정 -인접 행렬(2차원 , nxn ) , 초기화
7+
graph = [[INF]*(n+1) for _ in range(n+1)]
8+
9+
#1-1. 자기 자신에서 자기 자신 가는 비용 {Cost (A->A)}= 0 초기화
10+
for a in range(1,n+1) :
11+
for b in range(1,n+1):
12+
if a==b:
13+
graph[a][a] = 0
14+
15+
#1-2 .각 간선에 대한 정보를 입력 받아, 그 값으로 초기화 : Cost(A->B) = 초기값
16+
for _ in range(m):
17+
# Cost(A->B) = c
18+
a,b,c = map(int, input().split())
19+
graph[a][b]= c
20+
21+
#2. 플로이드 워샬 점화식 수행
22+
# a->b : a->k->b vs a->b
23+
for k in range(1,n+1):
24+
for a in range(1,n+1):
25+
for b in range(1,n+1):
26+
graph[a][b] = min(graph[a][b], graph[a][k]+ graph[k][b])
27+
28+
# 출력
29+
for a in range(1,n+1):
30+
for b in range(1,n+1):
31+
if graph[a][b] == INF :
32+
print("INF", end="")
33+
else :
34+
print(graph[a][b], end ="")
35+
print()

0 commit comments

Comments
 (0)