본문 바로가기

solved.ac : Class 7 풀이7

BOJ 13548 : 수열과 쿼리 6 문제 링크 : https://www.acmicpc.net/problem/13548사전 지식 / 관련 알고리즘 : Mo's Algorithm* Mo's Algorithm 을 모르신다면, 위 링크를 먼저 접속하시는 것을 추천 드립니다. Mo's Algorithm 문제.BOJ 2912 백설공주와 난쟁이 문제와 요구사항이 거의 비슷하다.주어진 구간 [i, j] 에서의 최빈값의 등장 횟수를 찾는 문제다. BOJ 2912 백설공주와 난쟁이 풀이에서와 똑같이, ncnt 배열과 ccnt 배열을 정의하여 풀 수 있다.자세한 내용 및 코드는 BOJ 2912 백설공주와 난쟁이 풀이에서 설명해 놓았다. #include using namespace std;int ncnt[100010]; /// 각 수가 몇 번 등장?int .. 2025. 5. 24.
BOJ 2912 : 백설공주와 난쟁이 문제 링크 : https://www.acmicpc.net/problem/2912사전 지식 / 관련 알고리즘 : Mo's Algorithm * Mo's Algorithm 을 모르신다면, 위 링크를 먼저 접속하시는 것을 추천 드립니다. 또 하나의 전형적인 Mo's Algorithm 문제다.마찬가지로, 정렬 후 첫 쿼리는 수동으로 구한다. ncnt[i] : i 번 색 모자를 쓰고 있는 난쟁이의 수ex) ncnt[3] = 5 는, 3번 색 모자를 5명의 난쟁이가 쓰고 있다는 것입니다. ccnt[i] : ncnt[k]=i 를 만족하는 k 의 개수ex) ccnt[4] = 3 은, 그 색깔의 모자를 쓰고 있는 난쟁이가 정확히 4명인 색깔이, 정확히 3종류 있다는 것입니다. ncnt 와 ccnt 를 통해, 현재 가.. 2025. 5. 24.
BOJ 13547 : 수열과 쿼리 5 문제 링크 : https://www.acmicpc.net/problem/13547사전 지식 / 관련 알고리즘 : Mo's Algorithm* Mo's Algorithm 을 모르신다면, 위 링크를 먼저 접속하시는 것을 추천 드립니다. 전형적인 Mo's Algorithm 문제.쿼리를 정렬한 후, 변화량만 계산하면 된다. cnt[i] : i 의 개수로 정의하자.어떤 수 x 를 제거하면 cnt[x]-- 를, 추가하면 cnt[x]++ 를 하면 된다. cnt[x] : 1 → 0 이 되었다면, x 가 완전히 사라진 것이므로, 가짓수를 1 줄인다.cnt[x] : 0 → 1 이 되었다면, x 가 새롭게 하나 생긴 것이므로, 가짓수를 1 늘인다. 처음에 쿼리를 정렬하여 입력 순서를 뒤섞어 놨으니, 출력하기 전에 이를 복.. 2025. 5. 23.
BOJ 1214 : 쿨한 물건 구매 문제 링크 : https://www.acmicpc.net/problem/1214사전 지식 / 관련 알고리즘 : 수학 Pa + Qb ≥ D 가 되어야 한다.가장 먼저 드는 생각은, P 의 개수 a 를 0, 1, 2, ... 로 늘려가면서, 그에 맞는 b 의 최솟값을 찾는 것이다. P의 개수 a 가 결정된다면, Qb ≥ D - Pa 이고, 이를 만족하는 자연수 b 의 최솟값은 ⌈ (D-Pa) / Q ⌉ 이다.이를 깔끔하게 구하는 법은, 분자에 Q-1 을 더하고 나누는 것이다.즉, ⌈ (D-Pa) / Q ⌉ 는 ceil 함수 없이 (D-Pa+Q-1) / Q 로 구할 수 있다. 하지만, 이러면 시간 초과가 날 수 있다.만약 D = 10억, P = 2 라면,a 의 범위는 0, 1, 2, ... 5억 까지도 가능하.. 2025. 5. 23.
BOJ 1126 : 같은 탑 문제 링크 : https://www.acmicpc.net/problem/1126사전 지식 / 관련 알고리즘 : 다이나믹 프로그래밍 (DP) 처음 이 문제를 접했을 때, 며칠 동안 시간이 나는 대로 조금씩 고민했었는데, 결국 풀어냈을 때 매우 짜릿했다.DP 의 정의를 떠올리는 관찰이 어렵지, 그 후 점화식을 세우는 것과 코딩을 하는 것 모두 쉽다. DP 의 상태로 가능한 변수들에는 어떤 것들이 있을까? 대부분의 DP 문제들이 그렇듯,조각이 1개 있을 때, 2개 있을 때, 3개 있을 때, ..., N개 있을 때 즉, 우리가 현재 "고려하고 있는 조각의 개수"를 x 로 두자.ex) x = 5 라는 것은, 1번 ~ 5번 조각까지만 고려한다는 것이다. 5번 조각을 반드시 쓸 필요는 없다. 우리의 목표는 두 탑의.. 2025. 5. 23.
BOJ 2261 : 가장 가까운 두 점 문제 링크 : https://www.acmicpc.net/problem/2261사전 지식 / 관련 알고리즘 : 분할정복 ( Divide and Conquer ) 문제는 정말 단순하다. N 개의 점이 2차원 좌표평면에 있으면, 가장 가까운 두 점 사이의 거리를 구하면 된다.단, N 제한이 최대 10만이기 때문에 O(N2) 풀이는 불가능하다. 시간을 줄이기 위해서, 우선 N2 개의 쌍들 중 답이 될 가능성이 없는 것을 생각해보자.현재까지 구한 답이 10 이라면, x 좌표가 10 이상 차이 나는 쌍들은 답을 절대 갱신시킬 수 없다.따라서, 현재까지 구한 가장 가까운 거리가 유용한 정보가 될 것이다. 위 논리에서 이어지는 생각으로, 우선 점들을 x 좌표 기준으로 정렬을 하자.물론 왼쪽부터 차례대로 스위핑을 해도.. 2022. 8. 31.