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
- 추천시스템
- 삼성SDS Brigthics
- 데이터분석
- 혼공머신
- Brightics
- Brightics를 이용한 분석
- 브라이틱스 서포터즈
- 삼성 SDS Brigthics
- 직원 이직률
- 혼공
- Brigthics를 이용한 분석
- 데이터 분석
- Brigthics
- 혼공학습단
- Brightics Studio
- 팀 분석
- Brigthics Studio
- 모델링
- 포스코 청년
- 노코드AI
- 삼성SDS Brightics
- 영상제작기
- 캐글
- 개인 의료비 예측
- 삼성SDS
- 직원 이직여부
- 브라이틱스
- 삼성 SDS
- 혼공머신러닝딥러닝
- 포스코 아카데미
Archives
- Today
- Total
데이터사이언스 기록기📚
[백준/Python] 2458번(DFS)_키 순서 본문
📌문제 유형
그래프 이론, 그래프 탐색, DFS, 플로이드-워셜 (골드 Lv.4)
📌문제
📌나의 문제풀이
- 같은 번호 내, 해당 번호보다 키가 작으면 before, 해당 번호보다 키가 크면 after에 넣어서 DFS 실행
n,m = map(int,input().split())
maps = [[[],[]] for _ in range(n+1)] # before, after
for _ in range(m):
a,b = map(int,input().split())
maps[a][1].append(b) # after
maps[b][0].append(a) # before
def dfs(i, j):
for num in maps[i][j]:
if visited[num] == 0:
visited[num] = 1
dfs(num,j)
ans = 0
for i in range(1,n+1):
visited = [0 for _ in range(n+1)]
visited[i] = 1
for j in range(0,2): # before, after
dfs(i, j)
if sum(visited) == n:
ans += 1
print(ans)
📌 다른사람의 문제풀이
- 플로이드 워셜 활용
https://claude-u.tistory.com/339
import sys
#입력
N, M = map(int, input().split())
height = [[0 for _ in range(N+1)] for _ in range(N+1)]
for _ in range(M):
tall, short = map(int, sys.stdin.readline().split())
height[tall][short] = 1
#플로이드 와샬 알고리즘
for k in range(1, N+1): #경로 for문이 가장 상위 단계여야 누락되지 않는다(k는 학생)
for i in range(1, N+1):
for j in range(1, N+1):
if height[i][j] == 1 or (height[i][k] ==1 and height[k][j] == 1):
height[i][j] = 1 #자신보다 작은 경우
#출력
answer = 0
for i in range(1, N+1):
known_height = 0
for j in range(1, N+1):
known_height += height[i][j] + height[j][i] #자신보다 작은사람과 큰사람의 합
if known_height == N-1: #자신의 키 순서를 알 경우
answer += 1
print(answer)
📌 리뷰
- 플로이드 워셜
- 모든 정점 사이의 최단 경로를 찾는 탐색 알고리즘
- 단방향 그래프일때 사용
- min(maps[i][j], maps[i][k] + maps[k][j])
728x90
'Coding Test > 백준(Python)' 카테고리의 다른 글
[백준/Python] 1967번(DFS)_트리의 지름 (0) | 2023.09.22 |
---|---|
[백준/Python] 11559번(BFS)_Puyo Puyo (0) | 2023.09.14 |
[백준/Python] 16938번(브루트포스 알고리즘)_캠프 준비 (0) | 2023.09.12 |
[백준/Python] 7576번(BFS)_토마토 (0) | 2023.09.08 |
[백준/Python] 2116번(구현, 브루트포스)_주사위 쌓기 (0) | 2023.09.05 |
Comments