Skip to content

Latest commit

 

History

History

10973

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

문제풀이

  • 이전순열
  • 실버3

n과 순열이 주어진다. 순열을 오름차순으로 정렬할 때 이전의 순열을 출력한다. 첫번째 순열일 경우 -1을 출력한다.

로직

순서가 중요한 순열 문제다.

  1. 저점 찾기
    뒤에서부터 탐색한다. 현재 요소와 이전 요소를 비교해서 이전요소(i-1)가 크다면 오름차순이 깨지는 지점이다. i-1을 낮은 지점이라 보고 교환 할 것이다.

  2. 낮은 지점 이후의 숫자에서 가장 작은 숫자와 교환하기
    낮은 지점 이후의 숫자들중에서 가장 작은 수를 찾아서 arr[i-1]과 교환한다. 이를 위해 끝에서부터 시작해서 arr[i - 1]보다 작을때까지 순회한다.

  3. 뒤집기
    낮은 지점 이후의 순열이 가장 큰 순열이 되도록 낮은 지점 이후의 순열을 뒤집어준다.