내용으로 건너뛰기
테페리넷
사용자 도구
등록
로그인
사이트 도구
검색
도구
문서 보기
Fold/unfold all
역링크
미디어 관리자
사이트맵
등록
로그인
>
미디어 관리자
사이트맵
현재 위치:
테페리넷
»
Problem Solving
»
문제
»
백준 온라인 저지 (BOJ)
»
스왑 스왑
ps:problems:boj:34728
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== 스왑 스왑 ====== ===== 풀이 ===== * 두번의 스왑이므로, 순열의 패리티가 보존된다. 따라서 주어진 순열이 홀순열이라면 정렬이 불가능하다. * 짝순열인 경우 정렬이 가능하다는 것은, i와 j를 같은 값으로 두면 주어진 연산이 인접 3개 원소를 로테이션하는것과 동일해진다는 것을 통해서 알수 있다. 인접 3개 원소를 로테이션 하는 연산으로 원하는 순열로 변환이 가능하다는 것은 [[ps:problems:boj:5000]] 과 동일 * 주어진 순열의 패리티만 확인하면 되므로 시간복잡도는 O(n) * [[https://upload.acmicpc.net/52e947ed-dff1-497a-ab16-778348439139/|공식 풀이]]에서는 버블정렬을 통해 반전수를 O(n^2)에 구하는 방법으로 설명하고 있다. n이 작아서 통과하는데에는 문제 없다. ===== 코드 ===== <dkpr py> """Solution code for "BOJ 34728. 스왑 스왑". - Problem link: https://www.acmicpc.net/problem/34728 - Solution link: http://www.teferi.net/ps/problems/boj/34728 Tags: [parity of permutation] """ import sys from teflib import permcycle def main(): _N = int(sys.stdin.readline()) a = [int(x) - 1 for x in sys.stdin.readline().split()] print('Yes' if permcycle.sign_of_permutation(a) == 1 else 'No') if __name__ == '__main__': main() </dkpr> * Dependency: [[:ps:teflib:permcycle#sign_of_permutation|teflib.permcycle.sign_of_permutation]] {{tag>BOJ ps:problems:boj:골드_2}}
ps/problems/boj/34728.txt
· 마지막으로 수정됨: 2025/11/13 07:28 저자
teferi
문서 도구
문서 보기
역링크
Fold/unfold all
맨 위로