본문 바로가기
프로그래밍/Python

[Python][BOJ 14938] 서강그라운드

by 김아잉 2023. 3. 11.
728x90

 

https://www.acmicpc.net/problem/14938

 

14938번: 서강그라운드

예은이는 요즘 가장 인기가 있는 게임 서강그라운드를 즐기고 있다. 서강그라운드는 여러 지역중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을

www.acmicpc.net

 

 

 플로이드 워셜, 데이크스트라, 브루트포스의 응용문제다. 나는 플로이드 워셜을 사용했는데, 각 정점에서 다른 정점으로 가는 길이를 모두 구해놓고 탐색 범위 m보다 길이가 작은 수들의 아이템 개수를 저장하고, 각 정점에서 모을 수 있는 아이템 개수들 중에서 최대값을 출력하면 되는 문제다.

 

코드는 아래에 있다.

더보기
n,m,r=map(int,input().split())
t=[0]+list(map(int,input().split()))

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

def floid():
    for k in range(n+1):
        for i in range(n+1):
            for j in range(n+1):
                d[i][j]=min(d[i][j],d[i][k]+d[k][j])

for i in range(1,n+1):
    d[i][i]=0

for _ in range(r):
    a,b,l=map(int,input().split())
    d[a][b]=l
    d[b][a]=l

floid()

ans=[0 for _ in range(n+1)]
for i in range(1,n+1):
    for j in range(1,n+1):
        if d[i][j]>m:
            continue
        ans[i]+=t[j]

print(max(ans))

 

 

728x90

'프로그래밍 > Python' 카테고리의 다른 글

[Python][BOJ 6951] Packet Routing  (0) 2023.03.13
[Python][BOJ 2862] 수학 게임  (0) 2023.03.11
[python][BOJ15973] 두 박스  (0) 2023.02.18
[python][BOJ1225] 이상한 곱셈  (0) 2023.02.13
[python][BOJ2373] Fibonacci Game  (0) 2023.02.12

댓글