https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWBJKA6qr2oDFAWr&categoryId=AWBJKA6qr2oDFAWr&categoryType=CODE 유니온 파인드를 구현하자. 123456789101112131415161718192021222324252627#include int p[1000001];int Find(int x) { return x==p[x]?x:p[x]=Find(p[x]); }void Union(int x,int y) { p[Find(x)]=Find(y); } int main(){ int t; scanf("%d",&t); for(int k=1;k
https://www.acmicpc.net/problem/14716 DFS나 BFS를 이용하여 연결 요소(Connected Component)의 개수를 세준다. 1234567891011121314151617181920212223242526#include int m,n,map[250][250],ans;int dx[8]={-1,-1,-1,0,0,1,1,1};int dy[8]={-1,0,1,-1,1,-1,0,1}; void dfs(int x,int y){ map[x][y]=0; for(int i=0;i
https://www.acmicpc.net/problem/1213 팰린드롬(Palindrome)이란 앞에서부터 읽으나 뒤에서부터 읽으나 같은 단어를 말한다. 예를 들면 abba, abbba, abcdcba 등이 팰린드롬이다. 이 문제는 문자열이 주어지고 적절히 위치를 바꿔서 팰린드롬을 만들 수 있는지 확인하는 문제이다. 1. 길이가 짝수이면 모든 알파벳의 개수도 짝수여야 한다.2. 길이가 홀수이면 하나의 알파벳의 개수만 홀수여야 한다. 위의 조건을 만족하는지 확인하고 팰린드롬을 만들 수 있다면 사전 순으로 출력한다. 먼저 A~Z까지 순서대로 보면서 개수의 절반씩 출력하고 다시 거꾸로 Z~A까지 보면서 나머지 절반을 출력하면 사전 순이 됨을 알 수 있다. 길이가 홀수인 경우는 미리 해당 인덱스를 저장한 후..