본문 바로가기

전체 글

(141)
백준 27728 - 개구리와 쿼리 (C++) 문제 문제 링크 BOJ 27728 - 개구리와 쿼리 문제 요약 $N \times N$ 크기의 $2$차원 배열에 대해 아래와 같은 $Q$개의 쿼리가 주어진다. 각 쿼리의 답을 출력하자. $S_x$ $S_y$ $L$ : 개구리의 초기 위치가 $\left(S_{x},S_{y}\right)$ 이고 최대 한번 $L$ 이상의 양의 정수 값 $T$만큼 점프할 수 있을 때 육지에 도달하는 데 걸리는 최단 시간을 출력하라. 제한 TL : $1$ sec, ML : $128$ MB $3 ≤ N ≤ 500$ $1 ≤ Q ≤ 200,000$ $0 ≤ A_{ij} ≤ 10,000$ 알고리즘 분류 다이나믹 프로그래밍(dp) 누적 합(prefix_sum) 풀이 쿼리에 대해 나이브하게 답한다고 생각해보자. 그럼 단순히 $O(N^2Q)..
백준 30976 - 사랑의 큐피드 (C++) 문제 문제 링크 BOJ 30976 - 사랑의 큐피드 문제 요약 $N$명의 여학생과 $M$명의 남학생에 대한 키 정보가 주어진다. 각 학생에 대한 선호 기준이 주어질 때, 성립될 수 있는 커플의 최대 수를 구해보자. 제한 TL : $1$ sec, ML : $512$ MB $1 ≤ N, M ≤ 400$ $1 ≤ G_i, B_i, L_i, U_i ≤ 300$ 한 학생이 둘 이상의 커플에 속할 수 없다. 알고리즘 분류 이분 매칭 (bipartite_matching) 풀이 여학생 집합과 남학생 집합은 서로 독립적이며, 간선은 서로 다른 집합에 대해서만 향할 수 있다. 즉, 문제의 조건대로 두 집합을 그래프로 모델링할 시 이 그래프는 반드시 이분 그래프의 형태를 띈다. 또한, $N, M ≤ 400$ 이고 최대 매칭..
백준 30975 - 약간 모자라지만 착한 친구야 (C++) 문제 문제 링크 BOJ 30975 - 약간 모자라지만 착한 친구야 문제 요약 경상국립대와 그 주변에 있는 동네 $N$개를 잇는 $M$개의 도로 정보가 주어진다. 동네별 $P_i$에 유의한 채, 경상국립대에서 시작해 모든 동네를 한 번씩 방문한 뒤 돌아오는 최소 시간을 구해보자. 제한 TL : $1$ sec, ML : $512$ MB $1 ≤ P_i ≤ N ≤ 14$ $1 ≤ M ≤ 200$ $1 ≤ w_i ≤ 100$ 시작 지점과 도착 지점이 모두 동일한 도로가 두 개 이상 존재할 수 있다. 알고리즘 분류 다이나믹 프로그래밍 (dp) 비트마스킹 (bitmask) 비트필드 위에서의 다이나믹 프로그래밍(dp_bitfield) 외판원 순회 문제 (tsp) 풀이 문제의 요구 사항과 제한을 보면 $tsp$ 냄새가..
백준 30943 - Zatopljenje (C++) 문제 문제 링크 BOJ 30943 - Zatopljenje 문제 요약 $N$개의 지점에 대해 $h_1, h_2, ... , h_N$이 주어진다. 아래 쿼리를 수행하는 프로그램을 작성해보자. $l$ $r$ $x$ : 해수면이 $x$까지 차올랐을 때, $[l, r]$에서 볼 수 있는 섬의 개수를 출력한다. 만약 인접한 섬이 모두 보인다면, 이는 하나로 쳐야 한다. 제한 TL : $2$ sec, ML : $1024$ MB $1 ≤ N, Q ≤ 200,000$ $0 ≤ h_i, x ≤ 10^9$ 알고리즘 분류 자료 구조(data_structures) 세그먼트 트리(segtree) 오프라인 쿼리(offline_queries) 풀이 온라인으로 풀기엔 좀 난감해 보인다. 쿼리를 순차적으로 처리할 때, $x$가 단조성..
백준 30869 - 빨리 기다리기 (C++) 문제 문제 링크 BOJ 30869 - 빨리 기다리기 문제 요약 $N$개의 버스 정류장에 대해 $M$개의 버스 노선 정보가 주어진다. '빨리 기다리기'를 최대 $K$번까지 사용할 수 있을 때, $1$번 정류장에서 $N$번 정류장까지 가는 데에 걸리는 최소 시간을 구해보자. 제한 TL : $2$ sec, ML : $1024$ MB $2 ≤ N ≤ 500$ $0 ≤ K ≤ 500$ $1 ≤ M ≤ 250,000$ $1 ≤ t_i, g_i ≤ 10,000$ 알고리즘 분류 그래프 이론 (graphs) 다익스트라 (dijkstra) 풀이 그래프에서 두 정점쌍 간의 최단 거리는 기본적으로 다익스트라를 이용해 쉽게 구할 수 있다. 그런데 이번 문제에선, 고려해야 할 것들이 조금 있다. 간선마다 배차 간격이 존재한다. ..
백준 30512 - 조용히 완전히 영원히 (C++) 문제 문제 링크 BOJ 30512 - 조용히 완전히 영원히 문제 요약 길이 $N$의 수열 $A_1, A_2, ... , A_N$이 주어진다. 아래 쿼리가 $Q$개 주어질 때, $Q$개의 쿼리를 순서대로 처리한 후의 수열과 각 쿼리마다 잊힌 원소의 개수를 구해보자. $L$ $R$ $x$ : 모든 $L ≤ i ≤ R$에 대해 $A_i = min(A_i, x)$를 적용한다. 제한 TL : $1$ sec, ML : $1024$ MB $1 ≤ N, Q ≤ 100,000$ $0 ≤ A_i, x ≤ 1,000,000$ 알고리즘 분류 자료 구조 (data_structures) 세그먼트 트리 (segtree) 느리게 갱신되는 세그먼트 트리 (lazy_propagation) 풀이 구간 업데이트답게 무지성 $lazy$_$p..
백준 30691 - 슈퍼 트리 뽀개기 (C++) 문제 문제 링크 BOJ 30691 - 슈퍼 트리 뽀개기 문제 요약 $N$개의 정점으로 이루어진 트리가 주어진다. 어떤 정점을 대상으로 작업을 진행할 때, 그 정점을 루트로 하는 서브트리에서 거리가 $K$ 이하인 모든 정점들이 함께 뽀개진다고 한다. 한 번의 작업만 수행할 수 있을 때 최대한 많은 정점을 뽀개는 경우를 찾아보자. 제한 TL : $2$ sec, ML : $1024$ MB $1 ≤ N ≤ 10^5$ $1 ≤ K ≤ 10^{18}$ $1 ≤weight ≤ 10^9$ 알고리즘 분류 자료 구조 (data_structures) 트리 (trees) 세그먼트 트리 (segtree) 머지 소트 트리 (merge_sort tree) 오일러 경로 테크닉 (euler_tour technique) 풀이 트리 문제..
백준 30621 - 어? 금지 (C++) 문제 문제 링크 BOJ 30621 - 어? 금지 문제 요약 $N$개의 시각에 대해 수열 $t_N, b_N, c_N$이 주어진다. 성우가 규칙을 지키는 선에서 대회장에 줄 수 있는 최종 혼란의 최댓값을 구해보자. 제한 TL : $1$ sec, ML : $1024$ MB $1 ≤ N ≤ 100,000$ $1 ≤ t_i, b_i, c_i ≤ 10^9$ $t_{i-1} < t_i;$ $b_i ≤ t_i$ 알고리즘 분류 다이나믹 프로그래밍 (dp) 이분 탐색 (binary_search) 풀이 어떤 시각 $t_i$에서, 선택할 수 있는 분기 방향을 생각해보자. 이는 다음과 같을 것이다. '어?'를 외치지 않는다. 지금부터 '어?'를 처음 외친다. 두 번째 경우의 연장선인데, $(t_i - b_i)$부터 지금까지 '..