Hard deck 143

034 : 수를 묶어서 최댓값 만들기

Priority // 5, 4, 3, 2, 1 // -1, -2, -3, -4, -5 Priority reversal // 1 2 3 4 5 // -5. -4. -3. -2. -1 D2F는 container 공간이 먼저 필요 그다음 나눠서 delivery 1 이상 위상공간에서는 모두 곱셈작업이 일어난다 계산은 recursive bottom처럼 마지막에만 생각하면 됨 - 3이 남거나 - 2가 남거나 pq는 그냥 더해주면 되고, mq는 0이 있으면 곱해서 없앰 - import java.util.Collections; import java.util.PriorityQueue; import java.util.Scanner; public class Main { public static void main(String..

033 : 카드 정렬하기

pq > 5 4 3 2 1 offer > (자동정렬) > remove - while 내부 local pointer - (pq.size != 1) 로 표현해도 되고 - (pq.size() > 1)로 표혀해도 됨 - 중요한거는 2가 빠지고 1이 추가되므로 1씩 줄어든다 plate는 이제까지의 횟수가 모두 누적된 것이므로, 새로 넣는 offer는 plate가 아닌 d1+d2를 넣어야 함 - import java.util.PriorityQueue; import java.util.Scanner; public class Main { public static void main(String[] args) { // ISC Scanner sc = new Scanner(System.in); int N = sc.nextInt..

Lowest Common Ancestor

기본 방법 - 루트 노드에서 BFS or DFS를 시작해, 각 노드의 부모 노드와 깊이를 저장 - 깊이가 다른 경우 더 깊은 노드의 부모 노드를 1개씩 올려주면서 같은 깊이로 맞춤 *PipeLine 만약 두 노드가 같게 나온다면, 해당 노드가 LCA이므로 탐색 종료 - 깊이가 맞춰진 상태에서 동시에 부모 노드로 올라가면서 누 노드가 같아질 때까지 반복 if (2 !== 3) > 시행 최소 공통 조상 빠르게 구하기 - 깊이를 맞춰 주거나, 부모 노드로 한 단계씩 올라갈때 한 단계 > 2^k 씩 올라가 비교하는 방법 - 기존 부모 노드만 저장해 두던 방식에서 2^k번째 위치의 부모 노드도 추가로 저장할 것 - P[K][N] N번 노드의 2^K번째 부모 노드 번호 - 점화식 P[K][N] = P[K-1][P[..

Hard deck/Module 2022.08.31