일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- React
- 호이스팅
- Promise
- 인터섹션
- 태그된 유니온
- Cypress
- 리터럴 타입
- useAppDispatch
- 반공변성
- TS
- app router
- 공변성
- 이분 검색
- recoil
- SSR
- webpack
- tailwind
- 무한 스크롤
- CI/CD
- 결정 알고리즘
- autosize
- 타입 좁히기
- 투포인터
- ESlint
- CORS
- RTK Query
- Jest
- map
- async/await
- dfs
- Today
- Total
짧은코딩
1766 문제집 본문
https://www.acmicpc.net/problem/1766
1766번: 문제집
첫째 줄에 문제의 수 N(1 ≤ N ≤ 32,000)과 먼저 푸는 것이 좋은 문제에 대한 정보의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 둘째 줄부터 M개의 줄에 걸쳐 두 정수의 순서쌍 A,B가 빈칸을 사이에 두고 주
www.acmicpc.net
참고한 사이트
https://freedeveloper.tistory.com/390
[이것이 코딩 테스트다 with Python] 36강 위상 정렬
4https://www.youtube.com/watch?v=xeSz3pROPS8&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=36 위상 정렬 사이클이 없는 방향 그래프의 모든 노드를 방향성에 거스르지 않도록 순서대로 나열하는 것을 의미..
freedeveloper.tistory.com
내 풀이(너무 모르겠어서 찾아봄)
import heapq
n, m = map(int, input().split())
graph = [[] for i in range(n+1)]
indegree = [0 for i in range(n+1)]
queue = []
answer = []
for i in range(m):
x, y = map(int, input().split())
graph[x].append(y)
indegree[y] += 1
for i in range(1, n+1):
if indegree[i] == 0:
heapq.heappush(queue, i)
while(queue):
t = heapq.heappop(queue)
answer.append(t)
for i in graph[t]:
indegree[i] -= 1
if indegree[i] == 0:
heapq.heappush(queue, i)
for i in answer:
print(i, end = " ")
이 문제는 위상 정렬을 사용했다. 위상 정렬은 선수 과정이 있는 경우에 적용할 수 있다. 하지만 만약 사이클이 돌아가면 위상 정렬 알고리즘을 적용할 수 없다.
graph는 문제의 방향을 나타내는 것, indegree는 들어오는 간선의 수, queue 큐를 활용, answer 최종 답을 저장
첫번째 for문: 그래프 방향을 입력 받고 저장
두번째 for문: 간선의 수가 0인 문제를 queue에 저장
while문: queue가 빌 때 까지 수행한다. 작은 번호부터 먼저 풀어야하는 것이라 heappop로 queue에서 작은 번호를 answer에 넣어준다. 그리고 넣은 번호에 연결된 번호의 들어오는 간선 수를 -1 해준다. 이때 만약 그 번호의 간선 수가 0이되면 queue에 넣어주고 반복한다.
'코딩 테스트(Python) > 백준, 프로그래머스' 카테고리의 다른 글
프로그래머스) 더 맵게 (0) | 2022.05.01 |
---|---|
프로그래머스) 기능개발 (0) | 2022.05.01 |
7662 이중 우선순위 큐 (0) | 2022.04.08 |
프로그래머스) 완주하지 못한 선수 (0) | 2022.04.06 |
프로그래머스) 숫자 문자열과 영단어 (0) | 2022.03.29 |