[백준] 두 배열의 합
https://www.acmicpc.net/problem/2143 2143번: 두 배열의 합 첫째 줄에 T(-1,000,000,000 ≤ T ≤ 1,000,000,000)가 주어진다. 다음 줄에는 n(1 ≤ n ≤ 1,000)이 주어지고, 그 다음 줄에 n개의 정수로 A[1], …, A[n]이 주어진다. 다음 줄에는 m(1 ≤ m ≤ 1,000)이 주어지고, 그 www.acmicpc.net 누적합을 활용하여 풀이하였습니다. 누적합을 사용한 이유는 A와 B 배열 각각의 구간 합을 알아야하기 때문입니다. 먼저, A에 대해 누적합을 하면서 모든 구간의 합을 a_prefix에 저장해둡니다. 그 다음 B의 모든 구간합을 구하면서 a_prefix에 저장되어 있는 값과 현재 구간합의 합이 T를 만족하면 정답이 되게 ..
2023. 4. 7.
[백준] 팰린드롬 분할
https://www.acmicpc.net/problem/1509 1509번: 팰린드롬 분할 세준이는 어떤 문자열을 팰린드롬으로 분할하려고 한다. 예를 들어, ABACABA를 팰린드롬으로 분할하면, {A, B, A, C, A, B, A}, {A, BACAB, A}, {ABA, C, ABA}, {ABACABA}등이 있다. 분할의 개수의 최솟값을 출력하 www.acmicpc.net DP를 활용하여 해결하였습니다. 현재 문자가 추가되었을 때 얻을 수 있는 최소 팰린드롬 분할의 개수를 그때 그때 구해주면 됩니다. dp[i]는 i번째 문자까지 얻을 수 있는 최소 분할 개수라고 가정했을 때 ABAC로 예를 들어보겠습니다. 최초에는 A가 추가됩니다. 문자 하나는 펠린드롬이고 dp[i] = 1입니다. B를 추가해봅니다..
2023. 4. 4.