티스토리 뷰

DS\Algo/Mathematics

BOJ 10972 다음 순열

MathTrauma 2022. 9. 28. 04:34

 

문제 링크 : https://www.acmicpc.net/problem/10972

 

10972번: 다음 순열

첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다.

www.acmicpc.net

 

가장 마지막에 오는 것은 내림차순이라는 문제의 설명이 모든 것을 말해 주고 있다.

 

N=5 인 경우 즉, 1 2 3 4 5 로 이루어지는 한 순열을 관찰해 보자.

$$ 2 \; 3 \; 5 \; 4 \; 1 $$

 

1. 순열에서 가장 긴 내림차순으로 이루어진 마지막 부분(suffix)을 찾았을 때, 

앞 부분이 2  3 으로 시작되는 순열의 마지막임을 알게 된다.

그렇다면 앞 부분 2  3 을 바꾸어야 할 것이다.

 

2. 뒤의 5  4  1 중에서 3 보다 큰 첫 수를 찾아서 바꾸어야 한다.

 

3. 2의 결과 앞 부분은 2  3 에서 2  4 로 바뀌고 뒷 부분은 1  3  5 로 두고 새로이 순열을 구성한다.

 

위의 1, 2, 3 단계를 일반화시키면 문제는 해결된다.

 

 

 

반응형

'DS\Algo > Mathematics' 카테고리의 다른 글

BOJ 10973 이전 순열  (0) 2022.11.11
BOJ 2981 GRANICA ( 검문 )  (1) 2022.10.14
BOJ 10826 피보나치 수 4  (0) 2022.10.02
BOJ 11049 행렬 곱셈 순서  (2) 2022.09.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함