예제 입력:50000100010000000000100100예제 출력:1 2 5 3 4일반 위상정렬시 답은 (1 2 4 5 3) or (2 4 1 5 3) or (2 1 4 5 3) 등등...문제조건 :답이 여러 개일 경우에는 사전 순으로 제일 앞서는 것을 출력한다.따라
이거 두줄 넣었는데 시간차이 이만큼 남 다른 빠른 코드 풀이는 비슷한데, k 거리에 있는 노드에 도착했을 때, answer 배열에 미리 담아 주는 과정을 해줘서 시간을 줄였다.
포인트는 최적화, bisect left 는 같은 수일 경우 왼쪽에 출력한다. (원래 그 숫자위치의 인덱스를 리턴)가장 가까이 있는 사대와의 거리를 확인해야돼서, idx -1 과 idx 값을 확인해줘야댐만약 최댓값보다 클 경우는 오른쪽에 출력하므로 index 를 넘어가게
I : 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 한 줄에 하나씩
나무 자르기 문제. I : 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000)둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보다 크거나 같
전위 순회 : 루트, 왼, 오중위 순회 : 왼, 루트, 오후위 순회 : 왼, 오, 루트딕셔너리 타입으로 데이터를 받는다.key = 루트, value = left, right각 순회별로, 루트를 출력하는 위치를 정한다.왼쪽 (or 오른쪽) 노드가 존재하면, 그 값을 루트
입력으로 전위 순회한 결과가 주어진다.입력값의 개수가 주어져 있지 않다.노드의 수가 정확하게 주어져 있지 않음 (10000이하) 따라서, 입력 받는 방법도 중요루트/왼/오 로 되어 있는 것을 > 왼/오/루트 로 출력.preorder = \[] 전위 순회한 결과를 담기
양방향 간선 (graph 입력시 주의)여러개의 같은 간선 주어질 수 있음 (방문 체크)정점 번호는 1~N방문할 정점이 여러개면, 작은 숫자부터 방문.\-> 원래 이 순서로 진행돼서 의미 없음.
방문 체크를 parent 배열 하나로 체크해도 될듯?
핵심 :홀수인 N개의 구슬이 주어진다.자신보다 무거운 구슬의 갯수가 (N//2) + 1 개 or자신보다 가벼운 구슬의 갯수가 (N//2) + 1 개과정 :입력 : 무거운 구슬의 개수를 구하기 위한 graph 와, 가벼운 구슬의 개수를 구하기 위한 rev_graph 를
1 << n - 1:1<< (n - 1) 임. (사칙연산 우선)어느 도시에서 시작해도 똑같다.\-> 0>1>2>3>0 == 1>2>3>0>1 == 2>3>0>1>2예) (0~1) + (1~2) + (2~3) + (3~0) 출발지를 0으로
외판원순회 등