스위핑 2

BOJ(백준) 30400번 팰린드롬 제거

https://www.acmicpc.net/problem/30400 30400번: 팰린드롬 제거 이안이는 팰린드롬을 싫어한다. 팰린드롬인 단어를 보면 당장 그 단어를 지워야 할 정도로 팰린드롬을 매우 싫어한다. 팰린드롬은 'level', 'bob'과 같이 양쪽으로 읽었을 때 동일하게 읽히는 단어 www.acmicpc.net 매내처 알고리즘 응용 문제 처음에 문제를 해결한 방식은 다음과 같다. (조금 복잡한 방식이다 아래에 훨씬 단순한 방법이 있다.) 우선 매내처를 이용해 길이가 M인 팰린드롬 구간을 모두 찾는다. 각각의 구간들이 이러한 시작과 끝을 같는다고 하자. 구간 각각의 문자들 중에서 하나 이상의 문자가 파괴되기만 하면 조건을 만족하므로 우리가 구해야 될 것은 그림에서 최소 몇개의 수직선을 그어야 ..

BOJ(백준) 2283번 구간 자르기

https://www.acmicpc.net/problem/2283 2283번: 구간 자르기 1번째 줄에 정수 N, K(1 ≤ N ≤ 1,000, 1 ≤ K ≤ 1,000,000,000)가 주어진다. 2~N+1번째 줄에 각 구간의 왼쪽 끝점과 오른쪽 끝점의 위치가 주어진다. 양 끝점의 위치는 0 이상 1,000,000 이하의 정수이다. www.acmicpc.net 스위핑(imos), 누적합, 투포인터 세가지 알고리즘이 잘 섞여있는 좋은 문제이다. 문제를 푸는 순서는 다음과 같다. ① imos 알고리즘을 사용해 0부터 1,000,000까지 좌표에서 지나가는 선의 개수를 배열에 저장한다. ② 해당 배열의 누적합을 구한다. ③ 투포인터를 사용해 제일 먼저 조건을 만족하는 구간을 찾는다. AC code #incl..