[BOJ 25181] 백준 25181번 - Swap the elements
1. 문제
$25181$. Swap the elements (2022 서강대학교 청정수컵 G번)
백준 25181번 - Swap the elements (https://www.acmicpc.net/problem/25181)
2. 풀이
어떤 숫자의 개수가 배열 길이의 절반보다 많으면, 숫자들을 어떻게 배치해도 $A_i==B_i$인 $i$가 하나 이상 생길 수 밖에 없다. (비둘기집 원리) 따라서 모든 숫자의 개수에 대해서 이를 확인하면, $B$ 배열을 만들 수 있는지 없는지를 알아낼 수 있다.
$B$ 배열을 만들 수 있다면, $A$ 배열의 어떤 숫자의 개수는 배열 길이의 절반보다 작다. 따라서 $A$ 배열을 오름차순으로 정렬하였을 때, $A[i]$와 $A[i + N / 2]$는 무조건 서로 다른 수이다.
위 사실을 이용하여 모든 $i$에 대해 $A[i]$와 $A[i + N / 2]$를 바꾸면(이미 바꿔진 수는 제외), $B$ 배열을 구할 수 있다.
3. 채점 결과
4. 회고
$B$ 배열을 만드는 것이 가능한지에 대한 여부는 금방 떠올렸으나, $B$ 배열을 만드는 방법을 쉽게 생각해내지 못했다.
여러 방법을 시도해봤으나, 모두 WA나 TLE를 받는 불완정한 방법이었고, 나중에서야 $B$ 배열의 가능 여부에 힌트가 있다는 사실을 알 수 있었다.
댓글남기기