[백준/Python] 10973_이전 순열
2021. 6. 22. 12:57ㆍ백준 알고리즘
문제
https://www.acmicpc.net/problem/10973
풀이
next_permutation 알고리즘의 부등호만 바꾸면 이전 순열을 구현할 수 있습니다.
코드
import sys
def prev_permutation(lst):
l = len(lst)
x = -1
for i in range(l - 2, -1, -1):
if lst[i] > lst[i + 1]:
x = i
break
if x == -1:
return [-1]
for j in range(l - 1, x, -1):
if lst[x] > lst[j]:
lst[x], lst[j] = lst[j], lst[x]
break
return lst[:x + 1] + lst[:x:-1]
n = int(sys.stdin.readline().rstrip())
case = list(map(int, sys.stdin.readline().rstrip().split()))
answer = prev_permutation(case)
print(' '.join(map(str, answer)))
'백준 알고리즘' 카테고리의 다른 글
[백준/Python] 12865_평범한 배낭 (0) | 2021.06.24 |
---|---|
[백준/Python] 3036_링 (0) | 2021.06.24 |
[백준/Python] 2529_부등호 (0) | 2021.06.22 |
[백준/Python] 1735_분수 합 (0) | 2021.06.22 |
[백준/Python]14503_로봇 청소기 (0) | 2021.06.18 |