목록2025/06/02 (2)
hwooo

https://www.acmicpc.net/problem/10942풀이M이 최대 1,000,000개 이므로 M이 들어올 때마다 팰린드롬인지 판단할 수는 없다. (시간제한 0.5초)따라서 모든 경우의 수에 대해 팰린드롬인지 저장한 후, 범위값이 들어오면 저장된 값을 불러와야 한다. 팰린드롬이란 중간을 기준으로 인덱스를 양 방향으로 이동했을 때 값이 같아야 한다.따라서 (1, 6)가 팰린드롬이라면 (2, 5), (3, 4) 또한 팰린드롬이어야 한다.이를 바탕으로 점화식을 세운다면 dp[s][e] = dp[s + 1][e - 1] && (nums[s] == nums[e]) 가 된다.이 때 s와 e의 차이가 2 미만일 경우는 dp 검증을 제외해줬다. dp[s][e]를 구할 때 dp[s + 1][e - 1]의 값..

https://www.acmicpc.net/problem/1197풀이주어진 그래프의 모든 정점들을 연결하며, 그 가중치의 합이 최소인 트리를 구해야 한다.이 때 트리이므로 루프가 생기면 안 된다.따라서 크루스칼 알고리즘을 사용, 가중치가 적은 것부터 연결한다.이 때 연결 여부를 확인 후 연결해야 하므로 union-find 를 사용하여 확인한다.Java 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.PriorityQueue;public class Main { private static int[] group; private static int V, E..