티스토리 뷰
문제링크
https://www.acmicpc.net/problem/11265
11265번: 끝나지 않는 파티
입력의 첫 번째 줄에는 파티장의 크기 N(5 ≤ N ≤ 500)과 서비스를 요청한 손님의 수 M(1 ≤ M ≤ 10,000) 이 주어진다. 각각의 파티장은 1번부터 N번까지 번호가 붙여져 있다. 다음에는 N개의 줄에 걸
www.acmicpc.net
문제설명
문제

입력
1 : 파티장의 크기 N(5 ≤ N ≤ 500)과 서비스를 요청한 손님의 수 M(1 ≤ M ≤ 10,000)
2 ~ N+1 : 인접 리스트의 거리 정보가 N * N만큼 주어짐.
i번째 줄의 j번째 수 T(1 ≤ T ≤ 1,000,000)는 i번 파티장에서 j번 파티장으로 직접적으로 연결된 도로를 통해 이동하는 시간을 의미
N+2~ : M개의 줄만큼 세개의 정수 A, B, C가 주어진다.
출력
M개의 줄에 걸쳐 서비스를 요청한 손님이 시간내에 다른 파티장에 도착할 수 있으면 “Enjoy other party”를, 시간내에 도착할 수 없으면 "Stay here”를 출력한다.
조건
- (5 ≤ N ≤ 500), (1 ≤ M ≤ 10,000)
- A(1 ≤ A ≤ N) 는 서비스를 요청한 손님이 위치한 파티장의 번호, B(1 ≤ B ≤ N) 다음 파티가 열리는 파티장의 번호, C(1 ≤ C ≤ 1,000,000,000)는 지금으로부터 다음 파티가 열리는데 걸리는 시간을 의미
문제풀이
# 50분
# 시간 복잡도 : O(N³+M) # 플루이드-워셜 + 파티장 출력 부분
# 공간 복잡도 : O((N+1)²) # 그래프
import sys
input = sys.stdin.readline
# 파티장 크기 N(5 ≤ N ≤ 500), 서비스 요청한 손님 수 M(1 ≤ M ≤ 10,000)
N, M = map(int, input().split())
# 그래프의 크기 N * N. 0번째 인덱스는 무시
graph = [[0 for _ in range(N + 1)] for _ in range(N + 1)]
# 인접 리스트 : N개의 줄에 걸쳐 각각 N개의 수가 주어진다.
for i in range(1, N + 1):
lst = list(map(int, input().split()))
for j in range(1, N + 1):
graph[i][j] = lst[j - 1]
# 플루이드-워셜 진행
def floyd_warshall():
for i in range(1, N + 1):
for j in range(1, N + 1):
for k in range(1, N + 1):
# 두 가지 경우를 비교한다 : j -> k vs j -> i -> k
graph[j][k] = min(graph[j][k], graph[j][i] + graph[i][k])
floyd_warshall()
for i in range(M):
Y, X, W = map(int, input().split())
# 해당 위치의 가중치가 W 이하일 때
# 서비스를 요청한 손님이 시간 내에 다른 파티장에 도달할 수 있는 경우
if graph[Y][X] <= W:
print("Enjoy other party")
# 해당 위치의 가중치가 W 이상일 때
# 서비스를 요청한 손님이 시간 내에 다른 파티장에 도달할 수 없는 경우
else:
print("Stay here")
'알고리즘' 카테고리의 다른 글
[boj] 14938_서강 그라운드_python (0) | 2023.12.18 |
---|---|
[boj] 18352_특정 거리의 도시 찾기_python (0) | 2023.12.18 |
[boj] 5547_일루미네이션_python (0) | 2023.11.27 |
[boj] 1600_말이 되고픈 원숭이_python (0) | 2023.11.27 |
[boj] 16918_봄버맨_python (0) | 2023.11.27 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 말이 되고픈 원숭이
- 죽음의 비
- 라그랑주 네 제곱수 정리
- 백준
- 3대요소
- Four Squares
- db 외부 접속
- 5557
- 뷰탬플릿
- 5547
- 파이썬
- ubuntu
- 비교표현식
- BOJ
- onos
- 특정 거리의 도시 찾기
- 22944
- 내 아이피.한국
- 16918
- 13397
- 끝나지 않는 파티
- 2228
- 17626
- mysql 유저 생성
- 구간 나누기
- 18352
- Python
- 11265
- 구간나누기2
- 19637
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함