🔑 오늘의 학습 키워드 bfs
🔗 문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/49191
from collections import deque
def solution(n, results):
answer = 0
left = {i+1 : [] for i in range(n)}
right = {i+1 : [] for i in range(n)}
for result in results:
left[result[0]].append(result[1])
right[result[1]].append(result[0])
def bfs(start,lr):
queue = deque([start])
visited =set()
while queue:
gwon = queue.popleft()
for i in lr[gwon]:
if i not in visited:
queue.append(i)
visited.add(i)
return visited
for i in range(1,n+1):
left_mem = bfs(i,left)
right_mem = bfs(i,right)
total = left_mem | right_mem # 합집합
if len(total) == n-1:
answer += 1
return answer
🗒️ 공부한 내용 본인의 언어로 정리하기
🤔 문제를 보고 든 생각
단방향 그래프라고 생각을 했다.
자기보다 순위가 낮은 사람들과 자기보다 순위가 높은 사람들 모두를 탐색한다면 자신의 순서를 특정할 수 있다고 생각했다.
⏰ 예상 시간 복잡도 O(V+E)
제한 사항
선수의 수는 1명 이상 100명 이하입니다.
경기 결과는 1개 이상 4,500개 이하입니다.
results 배열 각 행 [A, B]는 A 선수가 B 선수를 이겼다는 의미입니다.
모든 경기 결과에는 모순이 없습니다.
😎 알고리즘 개요
1. 단방향 그래프를 탐색하기 위해 그래프를 2개로 나눠주었다.
2. bfs를 돌며 자신이 보다 높은 사람들과 낮은 사람들을 모두 찾아주었다.
3. 만난 사람들을 더해줘서 자신을 제외한 n-1인 경우 +1을 해줬다.
✅ 오늘의 회고
- bfs풀이 :)
- 찾아보면 플루이드워셜 풀이도 있따.
#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL
'Coding test' 카테고리의 다른 글
99클럽 코테 스터디 27일차 TIL, 프로그래머스 / 공 이동 시뮬레이션 (1) | 2024.08.17 |
---|---|
99클럽 코테 스터디 26일차 TIL, 프로그래머스 / 개인정보 수집 유효기간 (0) | 2024.08.16 |
99클럽 코테 스터디 24일차 TIL, 프로그래머스 / 가장 먼 노드 (0) | 2024.08.14 |
99클럽 코테 스터디 23일차 TIL, leetcode / IPO (0) | 2024.08.13 |
99클럽 코테 스터디 22일차 TIL, leetcode / maximal-rectangle (0) | 2024.08.13 |