10973: 이전 순열

ewillwin·2023년 5월 1일
0

Problem Solving (BOJ)

목록 보기
37/230

  • 다음 순열 문제와 마찬가지로 이전 순열을 구하는 방법을 찾음
    1) 뒤에서부터 순회하며, 뒤에 있는 수(=t)가 앞에 있는 수(=h)보다 작은 경우, 이 둘을 swap 함
    2) t의 뒤에 있는 수부터 끝까지 내림차순으로 정렬해줌
import sys

N = int(input())
perm = list(map(int, sys.stdin.readline()[:-1].split(' ')))

if perm == sorted(perm): print(-1)
else:
    for i in range(N-1, 0, -1):
        if perm[i-1] > perm[i]:
            for j in range(N-1, 0, -1):
                if perm[i-1] > perm[j]:
                    perm[i-1], perm[j] = perm[j], perm[i-1]
                    perm = perm[:i] + sorted(perm[i:], reverse=True)
                    print(" ".join(map(str, perm)))
                    break
            break
profile
💼 Software Engineer @ LG Electronics | 🎓 SungKyunKwan Univ. CSE

0개의 댓글