
백준 - 11725번: 트리의 부모 찾기트리의 루트를 1이라고 정했을 때, 1을 제외한 각 노드의 부모를 구하는 문제이다.parent 배열을 생성하고 DFS를 1부터 진행하여 탐색하려는 곳과 현재 노드의 관계를 고려해 parent 배열을 채워나간다.현재 있던 노드가 부

백준 - 11725번: 트리의 부모 찾기트리의 지름이란, 트리에서 임의의 두 점 사이의 거리 중 가장 긴 것을 말한다. 트리의 지름을 구하는 문제이다.이 문제는 입력 형식이 불친절한 문제였다.5 1 3 2 -1 2 4 4 -1 3 1 2 4 3 -14 2 4 3 3 5

백준 - 12851번: 숨바꼭질2해결언어 : Python끝으로..매일 문제 하나, TIL 하나는 꾸준히 작성하겠다는 마음으로..!

백준 - 2638번: 치즈그림 1과 같이 치즈가 외부 공기와 2면 이상 닿아있으면 1시간 뒤에 녹는다.그러나 그림2와 같이 치즈로 둘러쌓인 공기는 내부 공기이므로 이것과 닿은 치즈들은 아무런 영향이 없다.N \* M 모눈종이에 치즈정보가 주어졌을 때 몇 시간 뒤에 치즈

백준 - 11779번: 최소비용 구하기 2n개의 도시가 있고, m개의 버스 정보가 주어지면, A에서 B도시로 가는데 드는 최소비용과 경로를 출력하는 문제이다.일단 이 문제는 가중치가 있는 그래프에서 최소비용을 구하는 문제이므로 다익스트라 알고리즘을 바로 떠올리면 된다.

백준 - 1865번: 웜홀N개의 지점, 무방향인 도로 M개와 방향이 있는 웜홀 W에 대한 정보가 주어진다.한 지점에서 출발해서 원래 지점으로 돌아왔을 때, 시간이 더 적어지는 경우가 있는지 판별하는 문제이다.웜홀에서의 가중치는 음수로 생각해야한다.이제껏 양수 가중치에서

백준 - 14938번: 서강그라운드지역 번호, 가진 아이템 수, 지역 번호간 거리에 대한 정보가 주어지고, 수색 범위 m이 주어진다.낙하한 지역에서 거리가 수색 범위 m 이내의 모든 지역의 아이템을 습득할 때, 얻을 수 있는 최대 아이템 개수를 구하는 문제이다.처음에

백준 - 1197번: 최소 스패닝 트리최소 스패닝 트리: 주어진 그래프의 모든 정점들을 연결하는 부분 그래프 중에서 그 가중치의 합이 최소인 트리최소 스패닝 트리를 만드는 데 드는 가중치(비용)를 구하는 문제이다.크루스칼 알고리즘을 이용하면 쉽게 구할 수 있다.방법:간

백준 - 2252번: 줄 세우기일부 학생들의 키를 비교한 결과가 주어졌을 때, 줄을 세우는 프로그램을 만드는 문제이다.문제를 딱 봤을 때 처음 보는 유형이라는 느낌이 들어 알고리즘 유형 확인 버튼을 바로 눌렀다.위상정렬이라는 키워드를 보고 먼저 인터넷에 개념을 공부하고

백준 - 1806번: 부분합N짜리 수열이 주어지면 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 문제이다. (s 이상의 합이 불가능하면 0을 출력)N의 조건이 10 ≤ N < 100,000 이기 때문에 N^2의 시간 복

백준 - 21610번: 마법사 상어와 비바라기문제를 잘 읽고, 손으로 어떻게 동작하는지 그려봐서 이해를 하고 난 뒤 코딩을 하는 것이 좋다.문제에서는 3. 구름이 사라진다가 먼저 나왔지만, 뒤에 과정에서 이 구름의 위치가 필요하다.따라서 이런 것들의 순서조정은 코드에

백준 - 14925번: 목장 건설하기M x N 크기의 땅이 있을 때, 땅에서 지을 수 있는 가장 큰 정사각형 목장의 한 변의 크기를 구하는 문제이다. 0은 들판, 1은 나무 그리고 2는 돌을 의미한다.이 문제는 0으로 된 가장 큰 정사각형의 한 변의 크기를 구하는 문제

백준 - 15661번: 링크와 스타트N명의 사람이 스타트 팀과 링크 팀으로 나뉘어 축구를 한다. 각 팀은 1명 이상이어야 한다.S는 같은 팀이 됐을 때 팀에 보탤 수 있는 능력치를 나타내는 행렬이며, Sij와 Sji는 다를 수 있다. 두 팀으로 나눴을 때, 가장 두 팀

백준 - 16194번: 카드 구매하기 2카드팩의 종류는 카드 1개가 포함된 카드팩, 카드 2개가 포함된 카드팩, ... 카드 N개가 포함된 카드팩과 같이 총 N가지가 존재한다.카드 팩의 가격이 주어졌을 때, N개의 카드를 구매하기 위해 민규가 지불해야 하는 금액의 최솟

백준 - 10844번: 쉬운 계단 수N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구하는 문제이다.계단 수는 인접한 모든 자리의 차이가 1인 수를 말한다.i는 i자리 까지 고려했을 때를 의미하고, j는 끝자리가 j인 상황을 의미한다.dpi는 한 자리 적은

백준 - 14226번: 이모티콘이모티콘을 S개 보내려고 한다.이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만들어 보려고 한다.화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다.클립보드에 있는 모든 이모티콘을

백준 - 14442번: 벽 부수고 이동하기 2(1, 1)에서 (N, M) 까지 벽을 최대 K번 부수면서 도착할 때 최단 거리를 구하는 문제이다.최단 거리를 구하는 문제이므로 일단 bfs 알고리즘을 생각할 수 있다.visited 배열을 위치만 고려하지 않고 같은 위치더라

백준 - 16947번: 서울 지하철 2호선지하철 2호선과 같은 형태의 노선도가 주어졌을 때, 각 역과 순환선 사이의 거리를 구하는 문제이다.주어진 그래프에서 사이클을 추출하기 위해 Union Find를 사용했다. 연결하려는 두 노드가 이미 같은 부모를 가지면 사이클을

백준 - 13460번: 구슬 탈출 2게임의 목표는 빨간 구슬을 구멍을 통해서 빼내는 것이다. (파란 구슬은 빼면 실패)네 방향으로 기울이는 동작이 가능하고, 기울이기를 통해 구슬을 움직인다. (구슬이 더 이상 안움직이면 기울이기를 멈춤)최소 몇 번 만에 빨간 구슬을 구

백준 - 1339번: 단어 수학주어진 단어들을 치환하여 더했을 때 가장 큰 값을 구하는 문제이다. 각 단어들의 알파벳은 0 ~ 9중 하나로 바꿀 수 있고, 같은 알파벳은 같은 숫자로 바꿔야 하며, 두 개 이상의 알파벳이 같은 숫자로 바뀌어지면 안 된다.code.plus

백준 - 15989번: 1, 2, 3 더하기 4정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 문제이다.수의 순서만 다른 것은 같은 것으로 친다.수의 순서만 다른 것은 가짓수에 들어가지 않는다. 이 말은 고려하는 수들이 오름차순이거나

백준 - 2293번: 동전 1n가지의 동전의 종류로 합이 k가 되는 경우의 수를 구하는 문제이다.동전은 여러번 사용해도 사용 가능하다. 그러나 구성이 같고 순서만 다른 경우는 하나의 경우로 간주한다.마지막 문장인 "순서만 다른 경우는 하나로 간주" 때문에 이 문제가 d

백준 - 12886번: 돌 그룹세 개의 돌 그룹 a, b, c가 주어졌을 때 모든 돌 그룹의 개수를 같게 만들 수 있으면 1, 없으면 0을 출력하는 문제이다.단계별 움직임:크기가 다른 두 돌 그룹을 선택해서 작은 것이 x, 큰 것이 y라 할 때 x는 x+x로, y는 y

백준 - 15486번: 퇴사 2상담 일정에 대한 정보로 걸리는 시간과 받는 금액이 주어졌을 때, 퇴사 전에 할 수 있는 최대 수익을 구하는 문제이다.상담이 진행되는 기간은 다른 상담을 할 수 없는데, 그 미래 상황을 모르기 때문에 dp 값을 채워나가려면 뒤에서부터 진행

백준 - 14921번: 용액 합성하기두 용액을 섞었을 때 가장 0에 가까운 특성값을 구하는 문제이다.n의 크기는 10^5이기 때문에 모든 조합을 비교해서 볼 수 없다.용액들이 오름차순으로 주어졌을 때, 이것을 이용해서 모든 조합을 고려하지 않아도 된다.양쪽 끝에 가장

백준 - 13975번: 파일 합치기 3여러 장(chapter)에 대한 파일 크기 정보들이 주어지고, 두 파일씩 합쳐서 최종적으로 하나의 파일로 합치려고 할 때, 필요한 최소비용을 계산하는 문제이다.우선순위 큐를 하나 두고 초기에 모든 파일 크기 정보를 넣는다.가장 작은

백준 - 4803번: 트리그래프에 대한 정보가 주어졌을 때, 트리의 개수를 구하는 문제이다.문제에서 주어진 그래프에 사이클의 유무가 트리의 개수를 세는 핵심이다.사이클인지 판별하기 위해 Union-Find기법을 사용했다.유니온 하려는 노드 둘의 대표노드가 같으면 사이클

백준 - 21276번: 계보 복원가 호석주어진 정보를 가지고 몇 개의 가문이 존재했는 지, 각 사람의 자식들을 알아내어 사전순으로 출력하는 문제이다.문자열로 정보가 주어졌기에 딕셔너리를 사용했다.degree(차수)정보를 입력때 받아내어 최종적으로 degree가 0인 것

백준 - 21940번: 가운데에서 만나기도시간 이동시간 정보가 주어졌을 때, 준형이와 친구들의 왕복시간들 중 최대가 최소가 되는 도시 X를 선택하는 문제이다.도시의 개수가 최대 200개 이기 때문에, O(N^3)의 시간복잡도를 가지는 플로이드 워셜을 사용해도 된다는 판

백준 - 2240번: 자두나무매 초마다, 두 개의 나무(1번, 2번) 중 하나의 나무에서 열매가 떨어지는 정보가 주어질 때, 받을 수 있는 최대 자두 개수를 구하는 문제이다. 최대 w번 움직일 수 있고, 움직이는 데 시간은 걸리지 않는다(1초보다 훨씬 짧은 시간)고 가

백준 - 18869번: 멀티버스 Ⅱ각 우주에서 행성들의 크기가 주어졌을 때, 균등한 우주의 쌍 개수를 구하는 문제이다.아래 조건이 두 우주가 균등한 조건이다.Ai < Aj → Bi < BjAi = Aj → Bi = BjAi > Aj → Bi > Bj각 우주들

백준 - 18869번: 멀티버스 ⅡN이 주어졌을 때 N을 연속된 소수의 합으로 나타낼 수 있는 경우의 수를 구하는 문제이다.모두 더했을 때 N이 되는 것이므로 연속된 소수중에 N이 넘어가는 것은 있을 수가 없다. 따라서 1부터 N까지 소수가 될 수 있는 것을 에라토스테

백준 - 1351번: 무한 수열무한 수열 A는 다음과 같다.A0 = 1Ai = A⌊i/P⌋ + A⌊i/Q⌋ (i ≥ 1)N, P와 Q가 주어질 때, AN을 구하는 문제이다.문제를 보고 바로 DP방식이 떠올랐고 정의된 식에 의해서 코드를 짰다.그런데 N은 최대 10^12

백준 - 1766번: 문제집난이도 순서인 N개의 문제가 있고, '먼저 푸는 것이 좋은 문제'가 있다고 할 때 다음 세 가지 조건에 따라 문제를 풀 순서를 정하는 프로그램을 작성하는 문제이다.N개의 문제는 모두 풀어야 한다.먼저 푸는 것이 좋은 문제가 있는 문제는, 먼저

백준 - 17835번: 면접보는 승범이네도시 정보와 면접장이 배치된 도시가 주어질 때, 면접장까지의 거리가 가장 먼 도시와 그 거리를 구하는 문제이다.최소거리를 구하는 다익스트라문제이다. 그러나 모든 경우에 대해서 다익스트라를 진행하기에는 N이 최대 100,000이므로

백준 - 2295번: 세 수의 합집합 U에서 세 수를 골라서 그 세 수의 합 d도 U안에 포함되는 경우 중 가장 큰 d를 구하는 문제이다.N아 1000이고, x + y + z = k 의 공식을 변형해서 x + y = k - z 를 생각하면 시간을 줄일 수 있다.해결언어

백준 - 13144번: List of Unique Numbers길이가 N인 수열이 주어질 때, 수열에서 연속한 1개 이상의 수를 뽑았을 때 같은 수가 여러 번 등장하지 않는 경우의 수를 구하는 문제이다.N이 최대 100,000 아므로 완전탐색은 불가능하다.따라서 투포인

백준 - 1781번: 컵라면해결언어 : Python끝으로..

백준 - 13168번: 내일로 여행도시 정보들과 교통수단에 따른 티켓 정보들이 주어졌을 때, 내일로 티켓을 사는 것과 사지 않는 것 중 더 나은 판단을 하는 문제이다.모든 경로에 대한 최단 거리(최소비용)를 구하는 문제이다.도시의 수가 최대 100개 이므로 O(N^3)

백준 - 20183번: 골목 대장 호석 - 효율성 2교차로와 골목, 수금액에 대한 정보가 주어졌을 때 내야하는 경로상 최대 요금의 최솟값을 구하는 문제이다.처음에 단순히 다익스트라 알고리즘만을 이용해 예산을 넘지 않는 범위에서 최소 요금을 갱신해서 통과하지 못했다. 이

백준 - 14719번: 빗물블록 높이가 차례로 주어졌을 때, 고이는 빗물의 총량을 구하는 문제이다.높이에 관한 문제들을 풀었던 경험상, 스택을 이용한 적이 많았어서 이번에도 스택을 사용해야겠다는 생각을 먼저했다.스택을 이용한 풀이에서는 빗물이 현재 위치에서 어떤 높이까

백준 - 2342번: Dance Dance Revolution눌러야 하는 숫자가 순서대로 주어질 때, 가장 힘을 적게 사용했을 때의 사용한 힘을 구하는 문제이다. (만약 어떤 번호를 연속으로 눌러야 한다면, 누른 발로 반복해서 눌러야 한다.)입력된 수열의 길이는 최대

백준 - 2533번: 사회망 서비스(SNS)얼리 아답터가 아닌 사람들은 자신의 모든 친구들이 얼리 아답터일 때만 이 아이디어를 받아들인다고 할 때, 필요한 최소 얼리 어답터의 수를 구하는 문제이다.트리에서는 사이클이 없기 때문에 dfs를 이용하면 한 방향으로 쭉 갈 수

백준 - 7579번: 앱N개의 앱에 대한 메모리와 비활성화 하는데 드는 비용 정보, 새로운 앱 B를 실행하는데 필요한 메모리 M바이트에 대한 정보가 주어졌을 때 비용의 합을 최소화해서 M 바이트를 확보하는 방법을 구하는 문제이다.이 문제는 KnapSack 알고리즘을 사

백준 - 11066번: 파일 합치기두 개의 파일을 합칠 때 필요한 비용(시간 등)이 두 파일 크기의 합이라고 가정할 때, 하나의 파일로 합칠 때 필요한 최소비용을 구하는 문제이다.백준 - 13975번: 파일 합치기3과 비슷해 보이나, 문제에서 "연속적인"이라는 말 때문

백준 - 1275번: 커피숍2N개 정수가 주어지고, Q개의 명령이 주어질 때, x부터 y까지 합을 출력하고 a번째 수를 b로 바꾸는 문제이다.N이 100,000으로 부분합을 구할 때 누적합을 이용하면, 수를 갱신할 때 너무 오래 걸린다.따라서 세그먼트 트리를 이용해서
문제 백준 - 2098번: 외판원 순회 분석 외판원 순회 문제(Traveling Salesman problem)는 한 외판원이 어느 한 도시에서 출발해 N개의 도시를 모두 거쳐 다시 원래의 도시로 돌아오는 순회 여행 경로를 계획한다고 할 때, 가장 적은 비용을 들이는 방법을 말한다. 모든 가능한 경로를 나열해서 구할 수도 있지만 시간 복잡도가 O(n!)...

백준 - 2357번: 최솟값과 최댓값M개의 주어진 구간에서의 최솟값과 최댓값을 구하는 문제이다.지난번에 배운 세그먼트 트리에서 응용하면 된다.구간합을 넣는 대신, 최소 최대를 넣으면 된다.메소드를 여러개 많들기 보다 tree의 한 노드에 최소, 최대를 모두 넣어 한 번

백준 - 3085번: 사탕 게임보드에 사탕 색상 정보가 주어지고, 색상이 다른 두 칸을 고른 다음 그 사탕들을 교환했을 때,같은 색으로 이루어진 가장 긴 연속 부분(행 or 열)을 구하는 문제이다.인접한 두 칸을 고를 수 있는 경우는 2x(N-1)x(N-1)+(N-1)

백준 - 1676번: 팩토리얼 0의 개수N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 문제이다.N이 최대 500이기 때문에 팩토리얼 값을 직접 구하고 문자열 연산을 통해 0의 개수를 구해도 된다.그러나 더 효율적인 방법이 있다.문제에서 말하

백준 - 1707번: 이분 그래프그래프에 대한 연결 정보가 주어졌을 때, 이 그래프가 이분 그래프인지 아닌지 판별하는 문제이다.썸네일 사진과 같이 연결되어 있는 노드는 서로 다른 그룹에 속해있는 그래프가 이분 그래프이다.특정 점에서 dfs를 진행하면서 색을 번갈아가면서

백준 - 32711번: 홀수로 나눠라! 짝수로 나눠라!'홀수 나누기' 혹은 '짝수 나누기'를 할 수 있을 때 주어진 수열을 나눌 수 있는지 확인하는 문제이다.홀수로 나누기각 집합을 이루는 원소의 합은 홀수여야 한다.수열을 홀수 개의 집합으로 나누어야 한다.짝수로 나누기

백준 - 2580번: 스도쿠스도쿠 문제와 같이, 비어있는 칸을 채워넣는 문제이다.9X9 칸이므로 복잡한 생각없이 백트래킹으로 경우를 따져보면 된다.먼저 빈 칸의 위치를 저장해두고, 그 빈 칸의 위치를 모두 채워넣는 경우가 되면 모든 규칙에 맞게 채워진 것이기 때문에 즉

백준 - 25632번: 소수 부르기 게임용태와 유진이가 부를 수 있는 소수 범위가 각각 주어지고, 용태부터 번갈아가며 소수를 부른다고 할 때, 누가 이길지 판별하는 문제이다.각자 최선을 다한다고 하면 공통된 범위의 소수를 먼저 부르는게 이득이다.따라서 각자 부를 수 있

백준 - 32712번: 다이얼 룰렛다이얼 룰렛을 K번 회전(시계방향 혹은 반시계방향)할 수 있을 때, 최대로 얻을 수 있는 점수를 구하는 문제이다.최대 N은 200,000, K는 109 이기 때문에 dfs를 통해 모든 경우를 구하면 시간초과가 난다.그래서 그리디적인 사

백준 - 1253번: 좋다N개의 수 중에서 어떤 수가 다른 수 두 개의 합으로 나타낼 수 있다면 그 수를 “좋다(GOOD)”고 한다.좋은 수의 개수를 구하는 문제이다.N이 최대 2000이다. 따라서 모든 조합을 구해놓고 판별하면 시간이 오래걸릴 뿐더러 어떤 수를 구할

백준 - 10610번: 30N이 주어졌을 때, 수의 배열을 조정해서 30의 배수중 가장 큰 수를 만들어내고, 만약 그런 수를 만들지 못하면 -1을 출력하는 문제이다.N이 최대 10^5로 구성되어 있으므로, 각자리 수를 조합해서 모든 가능한 수를 만들어 각각 30의 배수

백준 - 1520번: 내리막 길지도가 주어지고 제일 왼쪽 위에서 제일 오른쪽 아래로 간다고 할 때, 그리고 높이가 낮은 지점으로만 이동할 수 있다고 할 때, 가능한 경로의 개수를 구하는 문제이다.처음에 단순히 N과 M이 각각 500이하여서 단순 DFS를 사용하면 된다고

백준 - 15683번: 감시사물실에 놓인 CCTV(종류, 위치)와 벽의 정보가 주어졌을 때, 가장 사각 지대가 적은 경우를 구하는 문제이다.사무실에 존재하는 CCTV마다 각 방향을 4가지로 설정할 수 있다. (물론 종류 2와 5는 겹치는 경우가 있지만 구현을 편리하기

백준 - 3595번: 맥주 냉장고냉장고 용량 n (axbxc=n)이 주어졌을 때, 겉넓이가 가장 작은 경우의 a, b, c를 구하는 문제이다.두 번의 for문을 거치면서 n을 나눴을 때 나머지가 0이 된다면 a x b x c = n을 만족하는 경우이고 모든 가능한 경우

백준 - 15876번: Binary Counting0부터 돌아가면서 숫자를 세는데, 이진수로 바꿨을 때 앞자리 부터 끊어 말해야 한다. 참가자 수 n과 진수의 차례 k가 주어졌을 때 말해야 하는 숫자 5개를 구하는 문제이다.자바 문법의 Integer.toBinarySt

백준 - 22971번: 증가하는 부분 수열의 개수수열 A가 주어졌을 때, 각 i번째 숫자로 끝나는 증가하는 부분 수열의 개수를 구하는 문제이다.모든 각 자리는 자신 1개로만 끝날 수 있기 때문에 최소 1가지의 경우를 가진다.i가 끝나는 자리라고 고정하고 앞에 숫자들을

백준 - 23973번: 표적지 옮기기NxM 크기의 사격판에 대한 정보가 주어지고 표적지를 올려 1점부터 10점까지 정확히 한 번씩 점수를 얻을 수 있을 때, 표적지의 중심 칸이 위치해야 하는 사격판의 칸의 행과 열 번호를 구하는 문제이다.\*표적지 만들기19x19칸에

백준 - 2171번: 직사각형의 개수N개의 점의 정보가 주어졌을 때, 4개의 점이 이루는 사각형이 x축과 y축에 평행한 사각형들의 개수를 세는 문제이다.두 x좌표 (x1, x2)가 같지 않아야 하고,해당하는 x좌표에서 같은 y좌표 두 개 (y1, y2)가 있어야 한다.

백준 - 14561번: 회문어떤 십진수의 수 A가 주어졌을 때, 이를 n진수로 표현하면 회문인지 아닌지 판별하는 문제이다.십진수 A의 범위가 100,000,000,000이므로 long 자료형을 사용해야한다.자바에서 toString()메소드에 base 옵션을 넣어 사용하

백준 - 25178번: 두라무리 휴지한 단어를 재배열해 다른 단어를 만들 수 있어야 한다.두 단어의 첫 글자와 마지막 글자는 서로 동일해야 한다.각 단어에서 모음(a, e, i, o, u)을 제거한 문자열은 동일해야 한다.위 조건들을 만족한다면 YES, 만족하지 않는다

백준 - 27370번: 친구와 배달하기예시Albert의 시작 위치 Pa와 Bob의 시작 위치 Pb 모두 물건이 있으므로 어느 쪽에서 배달해도 상관없고, 각 집에 한 번씩 배달된다고 할 때 두 사람이 이동하는 거리의 총합이 최소가 되는 방법을 찾는 문제이다. 그러한 방법

백준 - 6068번: 시간 관리하기N개의 해야할 일에 대한 걸리는 시간과 끝내야하는 시간에 대한 정보가 주어졌을 때, 제 시간에 끝낼 수 있게 결정할 수 있는 한도에서 존이 가장 늦게 시작해도 되는 시간을 구하는 문제이다.가장 늦게 끝게 끝나는 시간부터 일을 최소 언제

백준 - 5021번: 왕위 계승유토피아를 세운 사람의 이름과 가족 정보가 주어지고, 왕위를 계승받기를 주장하는 사람의 이름이 주어질 때 가장 나라를 세운 사람과 혈통이 가까운 사람을 구하는 문제이다.왕위를 주장하는 사람의 혈통을 구하기 위해DFS를 이용한다.유토피아를

백준 - 31445번: 부분 달리기 시합N명의 사람이 달리기 시합을 하고 M개의 상대적인 실력 정보가 주어질 때, 모든 사람의 순위를 정확하게 예상할 수 있도록 뽑는 경우의 수를 구하는 문제이다.그래프를 구성하고 위상정렬 알고리즘을 사용하여 degree가 0인 값부터