백준 1509번 팰린드롬 분할(C)
문제세준이는 어떤 문자열을 팰린드롬으로 분할하려고 한다. 예를 들어, ABACABA를 팰린드롬으로 분할하면, {A, B, A, C, A, B, A}, {A, BACAB, A}, {ABA, C, ABA}, {ABACABA}등이 있다.분할의 개수의 최솟값을 출력하는 프로그램을 작성하시오.입력첫째 줄에 문자열이 주어진다. 이 문자열은 알파벳 대문자로만 이루어져 있고, 최대 길이는 2,500이다.출력첫째 줄에 팰린드롬 분할의 개수의 최솟값을 출력한다.링크https://www.acmicpc.net/problem/1509풀이은근 쉽게 감을 잡을 수 있다.s를 입력받은 문자열이라고 하자. 평범한 dp문제와 같이 dp[n]을 s[1:n]을 쪼갤 때 필요한 최소 팰린드롬 개수로 정의하자. s[n-a:n]이 팰린드롬 문자..
2024. 8. 29.
백준 17408번 수열과 쿼리 24(C)
문제길이가 N인 수열 A1, A2, ..., AN이 주어진다. 이때, 다음 쿼리를 수행하는 프로그램을 작성하시오1 i v: Ai를 v로 바꾼다. (1 ≤ i ≤ N, 1 ≤ v ≤ 109)2 l r: l ≤ i + Aj 중에서 최댓값을 출력한다. (1 ≤ l 수열의 인덱스는 1부터 시작한다.입력첫째 줄에 수열의 크기 N이 주어진다. (2 ≤ N ≤ 100,000)둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 109)셋째 줄에는 쿼리의 개수 M이 주어진다. (2 ≤ M ≤ 100,000)넷째 줄부터 M개의 줄에는 쿼리가 한 줄에 하나씩 주어진다.출력2번 쿼리에 대해서 정답을 한 줄에 하나씩 순서대로 출력한다.링크https://www.acmicpc.net/problem/17408풀..
2024. 8. 26.