모눈종이에 사각사각

[백준 11265] 끝나지 않는 파티 본문

CodingTest/Baekjoon

[백준 11265] 끝나지 않는 파티

모눈종이씨 2022. 4. 6. 15:20

🍎 [백준 11265] 끝나지 않는 파티

문제링크

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

 

11265번: 끝나지 않는 파티

입력의 첫 번째 줄에는 파티장의 크기 N(5 ≤ N ≤ 500)과 서비스를 요청한 손님의 수 M(1 ≤ M ≤ 10,000) 이 주어진다. 각각의 파티장은 1번부터 N번까지 번호가 붙여져 있다. 다음에는 N개의 줄에 걸

www.acmicpc.net

 

⚾ 코드

# 11265 끝나지 않는 파티
import sys
input = sys.stdin.readline
N, M = map(int, input().split())  # N: 파티장의 크기, M: 서비스를 요청한 손님의 수


graph = [list(map(int, input().split())) for _ in range(N)]

# 입력 받을 때 for문을 통해 list.append로 입력을 받는 것 보다
# 리스트 내포(List  Comprehension)를 통해 입력 받는 것이 더 빠름.
# graph = []
# for _ in range(N):
#     graph.append(list(map(int, input().split())))

for k in range(N):
    for i in range(N):
        for j in range(N):
            
            # 최솟값을 갱신할 때 min을 쓰면 작든, 크든 모든 경우에 갱신하므로
            # if 문을 사용했을 때보다 시간이 오래 걸린다.
            
            if graph[i][k]+graph[k][j] < graph[i][j]:
                graph[i][j] = graph[i][k]+graph[k][j]

            # graph[i][j] = min(graph[i][j], graph[i][k]+graph[k][j])

for _ in range(M):
    a, b, c = map(int, input().split())
    if graph[a-1][b-1] <= c:
        print("Enjoy other party")
    else:
        print("Stay here")

 

🔔 해결 과정 & 깨달은 점

- 알고리즘 : 플로이드 워셜 알고리즘

- 처음에 무작정다익스트라 알고리즘 방식으로 풀다가 플로이드 워셜 알고리즘으로 풀어야 한다고 깨닫고 코드를 수정했다. 문제를 끝까지 잘 읽고 접근하자고 다짐했다.

- 코드를 다 맞게 작성한 것 같은데 계속 시간초과 에러가 났다. 분명히 내가 적은 코드 어딘가에서 시간 초과가 발생하고 있는 것이라 판단되어서 하나씩 수정해봤다.

1. min 으로 최솟값을 갱신한 부분을 if 문을 써서 해봤다.

최솟값을 갱신할 때 min을 쓰면 비교 후 모든 경우에 대해서 갱신을 하지만, if 문은 조건에 맞을 때만 갱신을 하기 때문에 속도가 빨라졌다. 따라서 python과 pypy3모두 통과되지 않았지만 이렇게 코드를 바꿔보니 pypy3에서는 통과하였다.

2. 입력을 받을 때 list.append가 아닌 List Comprehension으로 입력을 받았다.

List Comprehension이 list.append보다 속도가 더 빠르다고 한다.

이렇게 바꾸니 python에서도 통과가 되었다.

- min을 쓸 때는 불필요하게 업데이트 되는 값이 없을 때 사용하도록 하자.

- 그리고 List Comprehension이 가능한 상황에서는 되도록 List Comperhension을 사용하도록 하자.

 

 

 

 

'CodingTest > Baekjoon' 카테고리의 다른 글

[백준 9466] 텀 프로젝트  (0) 2022.04.11
[백준 13549] 숨바꼭질3  (0) 2022.04.08
[백준 18405] 경쟁적 전염  (0) 2022.04.04
[백준 1707] 이분 그래프  (0) 2022.03.18
[백준 1697] 숨바꼭질  (0) 2022.03.16
Comments