본문 바로가기

Problem Solving

(98)
백준 16318번 Delivery Delays 문제 요약 정점 $n$개, 간선 $m$개의 무방향 그래프가 주어진다. 해당 그래프의 1번 노드에 피자집이 있다. $k$개의 피자 주문이 들어오는데 각 주문은 $s_i, u_i, t_i$로 들어오는데 각각 주문이 들어온 시각, 주문이 들어온 노드의 번호, 해당 주문의 피자가 완성되는 시간이다. 이 피자들을 주문이 들어온 순서대로 배달하려고 한다. 시각 0에 1번 정점에 위치하며, 들고다닐 수 있는 피자의 수에 제한은 없다. 이 때, 각 주문의 대기시간의 최댓값을 최소화 하여라. $ n \le 1000$, $ m \le 5000$, $ k \le 1000$, $ 0 \le s_i \le t_i \le 10^8 $ 풀이 들고다닐 수 있는 피자의 수에 제한이 없으므로 피자집에서 다른 피자가 준비 완료될 때까지 ..
백준 21279번 광부 호석 문제 요약 점 $(X_i, Y_i)$가 $N$개 주어진다. 이 때, $(0, 0)$을 왼쪽 아래 꼭짓점으로 하고 $(H, W)$를 오른쪽 위 꼭짓점으로 하는 직사각형을 그리고자 한다. 이 때, 직사각형에 포함되는 점의 개수는 최대 $C$개이다. 각 점에 대응하는 가치인 $V_i$도 주어지는데 조건을 만족하는 직사각형 중에서 포함되는 점들의 가치의 합이 최대가 되게 그렸을 때의 그 최댓값을 출력해야 한다. $ 1 \le N \le 500,000$, $1 \le C \le N$, $ 0 \le X_i, Y_i \le 100,000$, $1 \le V_i \le 10^8$ 풀이 우리가 그리고자 하는 직사각형의 오른쪽 위 꼭짓점을 위주로 풀이를 진행해보자. 이 꼭짓점의 $y$좌표를 $a$로 고정했다고 하자. 그..
백준 21278번 호석이 두 마리 치킨 문제 요약 정점 수가 $N$이고, 간선 수가 $M$인 무방향 그래프가 주어진다. 모든 간선의 길이는 1이다. 다음과 같은 값이 최소가 되는 정점 $u, v$의 번호를 오름차순으로 출력하고 그 값을 출력해야 한다. 같은 값을 가지는 정점 쌍이 여러개라면 사전순으로 제일 앞서게 출력하면 된다. $$ 2\sum_{t \in V}min(dist(u, t), dist(v, t)) $$ $N \le 100, N-1 \le M \le N(N-1)/2$ 실제로 문제에서 식을 주진 않았는데 이를 잘 해석하면 위 식의 값을 구하는 것이 맞다. 풀이 일단 모든 정점에서부터 모든 정점으로까지의 최단 거리를 구해야 한다. 이를 위해서 플로이드 워셜을 사용할 수도 있지만 그래프가 무방향에다 모든 간선의 가중치가 동일하므로 BFS..
백준 21277번 짠돌이 호석 문제 요약 $ N_1 \times M_1 $ 퍼즐이 하나, $ N_2 \times M_2 $ 퍼즐이 하나 주어진다. 각 테이블엔 0 또는 1이 적혀져 있다. 각 퍼즐은 90도씩 회전이 가능하다. 이 때, 이 두 퍼즐을 합치려고 하는데 서로 1이 적혀져 있는 부분이 겹치지 않으면 둘이 겹치는 것도 가능하다. 이런 식으로 두 퍼즐을 합쳤을 때 이 두 퍼즐을 포함하는 최소 크기의 직사각형의 넓이 중 최소를 출력하시오 $ 1 \le N_1, M_1, N_2, M_2 \le 50$ 풀이 놓을 수 있는 방법을 생각해보자. 퍼즐 하나를 고정시켜놓고 다른 퍼즐 하나를 놓는다고 하자. 고정 시킨 퍼즐이 $ N_1 \times M_1$이라고 한다면 $ N_2 \times M_2 $ 퍼즐을 놓아볼 수 있는 곳은 고정된 퍼즐..
백준 21276번 계보 복원가 호석 문제 요약 $N, M$이 주어지는데 사람이 N명이고 조상관계가 M개 주어진다는 뜻이다. 어떤 사람 $A$가 $B$의 조상이란 뜻은, $B$가 $A$의 부모이거나, $A$의 부모의 조상이란 뜻이다. 가문이란 한 명의 시조를 root로 하는 트리의 형태를 띈다. 가문의 수와, 각 가문의 시조와, 각 사람의 자식들을 출력해야 한다. 이 때, 모든 사람들을 본인의 조상을 완벽하게 기억하고 있고 이 내용이 주어진다. $ N \le 1000, 0 \le M \le N(N-1)/2$ 풀이 본인의 조상을 완벽하게 기억하고 있다는 조건이 좀 중요하다. 가문이 트리 구조를 가진다고 제시했으니 이 조건은 바꿔 말하면 어떤 노드가 트리에 속해 있을 때, 해당 트리 내에서 본인의 모든 조상을 알려준다는 것이다. 이를 토대로 풀..
백준 21275번 폰 호석만 문제 요약 문자열 A, B가 주어진다. 두 문자열이 각각 A진법, B진법으로 표현되어 있다고 했을 때 10진법으로 바꾼 숫자를 A', B'라고 하자. A' = B' 이면서 A != B인 (A,B)가 정확히 하나 있다면 그 숫자와 A, B를 출력하고 두 개 이상이라면 Multiple, 없다면 Impossible을 출력하자. 이 때, $ 0 \le A', B' \lt 2^{63}$을 만족해야 한다. $ 2 \le A, B \le 36$ 주어지는 문자열의 길이는 최대 70이다. 풀이 어떤 문자열을 $B$진법으로 표현되어 있다고 가정하고 10진법으로 변환하는 것은 문자열의 길이만큼 시간이 걸린다. 따라서, 주어진 두 문자열을 2진법부터 시작해서 36진법까지 전부 바꿔 ..
백준 21214번 Decoration 문제 요약 숫자 $N, K$가 주어진다. 다음을 만족하는 길이가 K인 수열 $s$중에서 모든 원소의 합이 가장 작은 $s$를 찾아서 출력하시오. 만족하는 수열이 없으면 -1을 출력하면 된다. $s_i \neq s_j, i \neq j, 1 \le i,j \le K$ $ 0 \le s_i \lt N$ $\text{for all } 1 \le i \lt K, s_{i+1} \equiv s_i + D(s_i) \bmod N$, 여기서 $D(x)$는 $x$의 약수의 갯수를 말한다. $ 1 \le N, K \le 1,000,000$ 풀이 문제를 푸는 데에 있어서 중요한 관찰은 3번 조건때문에 $s_i$가 정해지면 $s_{i+1}$이 정해져 버린다는 점이다. 그래서 이런 관계를 함수 $f$로 표현해서 $f(x) =..
백준 18527번 All Kill 문제 요약 문제가 n개 주어지고 시간이 t만큼 주어진다. 문제를 푸는 과정은 두 단계로 나뉜다. 풀이가 생각난다. 코딩을 한다. 각 문제 별로 코딩에 걸리는 시간이 다르며, 각 문제의 풀이가 떠오를 확률은 각 분마다 $\frac{1}{\text{남은 분 수}}$이다. 풀이가 떠오르면 바로 코딩을 시작하는데, 항상 풀이가 떠오른 문제들 중에서 번호가 낮은 문제부터 코딩을 한다. 즉, 7번 문제를 코딩 중인데 2번 문제의 풀이가 떠올랐다면 2번 문제의 코딩을 바로 시작한다. 반대로 2번 문제을 코딩하는 도중에 6, 7번 문제의 풀이가 떠올랐다면 2번 문제의 코딩을 끝내고 6, 7번을 순서대로 코딩한다. 이와 같이 문제를 푼다고 했을 때, 모든 문제를 풀되, 코딩 중에 방해받지 않고 모든 문제를 풀 확률을 $..