Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 코테
- JPA
- 공개키 암호화
- 크루스칼
- 99클럽 #코딩테스트준비 #개발자취업 #항해99 #til
- 코딩테스트
- 자료구조
- python
- 항해99
- jsp
- 자바의정석
- 암호학
- 개발자취업
- sql
- javascript
- 가상컴퓨팅
- Algorithm
- Java
- generic class
- js
- 99클럽
- Queue
- 알고리즘
- spring
- 코딩테스트준비
- mybatis
- til
- BFS
- dbms
- DB
Archives
- Today
- Total
PLOD
99클럽 코테 스터디 5기 5일차 TIL + 플로이드 워셜 본문
- 오늘의 학습 키워드
Floyd-warshall(최단경로, 플로이드-워셜 알고리즘)
- 공부한 내용 본인의 언어로 정리하기
# https://www.acmicpc.net/problem/17270
import sys
input = sys.stdin.readline
INF = int(1e9)
v,m = map(int,input().split())
matrix = [[INF] * v for _ in range(v)]
for _ in range(m) :
a,b,c = map(int,input().split())
matrix[a-1][b-1] = c
matrix[b-1][a-1] = c
for k in range(v) :
matrix[k][k] = 0
for i in range(v) :
for j in range(v) :
matrix[i][j] = min(matrix[i][j], matrix[i][k] + matrix[k][j])
J, S = map(int, input().split())
J -= 1; S -= 1 # 0-based Index
SUM = INF # 최단 거리의 합. 초기엔 무한대
cand = [] # 약속 장소 후보 리스트
for i in range(v):
if i not in [J, S]: # 조건 1
s = matrix[J][i] + matrix[S][i]
# 조건 2
if s < SUM: # 거리의 합이 갱신 되면 리스트 초기화
SUM = s
cand = []
if s == SUM and matrix[J][i] <= matrix[S][i]: # 조건 3
cand.append([i, matrix[J][i]])
# 조건 4를 고려하여 정렬 후 맨 앞에 오는 약속 장소 출력
print(sorted(cand, key = lambda x: x[1])[0][0] + 1) if cand else print(-1)
- 오늘의 회고
1. 어떤 문제가 있었고, 나는 어떤 시도를 했는지
나는 처음에는 다익스트라로 풀어보려고 했다. 다익스트라를 통해서 지헌이와 성하 사이의 최단 거리를 구한 다음 조건에 맞는 경로를 찾으려고 했다.
2. 어떻게 해결했는지
문제를 풀었는데 자꾸 채점을 하면 틀렸다. 다음 조건을 하나하나 다 체크해서 신경써줘야 해서 까다로웠던거 같다
- 지헌이의 출발 위치와 성하의 출발 위치는 새로운 약속 장소가 될 수 없다.
- 성품도 훌륭한 지헌이는 새로운 약속 장소는 지헌이가 걸리는 최단 시간과 성하가 걸리는 최단 시간의 합이 최소가 되도록 하고 싶다.
- 지헌이가 더 늦게 도착하면 성하에게 안좋은 소리를 들을 것이 뻔하기에, 1번과 2번 조건을 만족하는 장소 중에서도 지헌이가 성하보다 늦게 도착하는 곳은 약속 장소가 될 수 없다.
- 위의 세 조건을 모두 만족하는 약속 장소가 여러 곳이 있다면, 그 중에 지헌이로부터 가장 가까운 곳이 최종 약속 장소가 된다. 그런 장소도 여러 곳이 있다면, 그 중에 번호가 가장 작은 장소가 최종 약속 장소가 된다.
3. 무엇을 새롭게 알았는지
최단 경로 문제에서 다익스트라 말고 플로이드 워셜을 사용해야 하는 경우에 대해 알게 되었습니다
'대외 활동 및 IT 지식 > 알고리즘 문제 풀이 정리' 카테고리의 다른 글
99클럽 코테 스터디 5기 8일차 TIL + 다익스트라 (0) | 2025.02.11 |
---|---|
99클럽 코테 스터디 5기 4일차 TIL + 투포인터 (0) | 2025.01.25 |
99클럽 코테 스터디 5기 3일차 TIL + 다익스트라 (0) | 2025.01.25 |
99클럽 코테 스터디 5기 2일차 TIL + 프로그래머스 가사 검색(Trie) (0) | 2025.01.15 |
99클럽 코테 스터디 1일차 TIL + 백준 11657(벨만-포드) (0) | 2025.01.14 |
Comments