순열
면접 대비시간 제한2초메모리 제한1024 MB
역순서 표가 주어질 때, 그 표가 나타내는 순열을 복원하여 사이클 표기법으로 출력합니다.
문제
은 집합 을 뜻한다. 차수가 인 순열은 집합 에서 집합 으로 가는 일대일 대응이다. 예를 들어 차수가 인 순열 을 생각하자. 보통 다음과 같은 표로 나타낸다.
이는 , , 등을 뜻한다. 윗줄은 항상 이므로 생략하고 한 줄 표기법으로 순열을 적는다.
사이클 표기법도 널리 쓰인다. 원소 에서 시작해 그 상 을 구한다. 다음으로 원소 의 상 를 구한다. 이 과정을 반복하면 결국 원소 로 돌아온다. 실제로 이다. 따라서 순열 에는 사이클 가 있다. 그다음에는 아직 어떤 사이클에도 나타나지 않은 가장 작은 수를 골라 같은 과정을 반복한다. 이 경우에는 이다. 결국 다음을 얻는다.
차수가 인 순열은 역순 표인 ()로도 나타낼 수 있다. 여기서 는 한 줄 표기법에서 보다 크고 의 왼쪽에 나오는 원소의 개수이다. 이 예시의 역순 표는 다음과 같다.
모든 순열은 역순 표로 유일하게 나타낼 수 있다. 또한 모든 에 대해 를 만족하는 역순 표 은 올바른 순열을 나타낸다.
역순 표를 입력받아 그에 대응하는 사이클 표기법으로 바꾸는 프로그램을 작성하라.
입력
첫째 줄에 순열의 차수 이 주어진다. 둘째 줄에는 올바른 역순 표를 나타내는 정수 개가 공백으로 구분되어 주어진다.
출력
역순 표가 나타내는 순열의 사이클 표기법을 한 줄에 출력한다. 각 사이클은 괄호로 묶는다. 사이클 사이는 공백 하나로 구분한다. 사이클 안의 수도 공백 하나로 구분한다. 각 사이클의 맨 앞에는 가장 작은 원소를 둔다. 사이클은 맨 앞 원소의 순서대로 나열한다. 예시를 참고하라.