[백준/Python]10972_다음 순열
2021. 6. 17. 14:57ㆍ백준 알고리즘
문제
https://www.acmicpc.net/problem/10972
풀이
next_permutation 알고리즘을 사용합니다.
아래 페이지를 참고하세요.
https://steadycode.tistory.com/27
코드
import sys
def next_permutation(lst):
l = len(lst)
x = -1 # highest index
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, 0, -1):
if lst[j] > lst[x]:
lst[x], lst[j] = lst[j], lst[x]
break
return lst[:x + 1] + lst[:x:-1]
n = int(sys.stdin.readline().rstrip())
s = list(map(int, sys.stdin.readline().rstrip().split()))
answer = next_permutation(s)
if answer == -1:
print(answer)
exit(0)
print(*answer) # positional argument
'백준 알고리즘' 카테고리의 다른 글
[백준/Python]1965_상자넣기 (0) | 2021.06.18 |
---|---|
[백준/Python]1759_암호 만들기 (0) | 2021.06.17 |
[백준/Python]2004_조합 0의 개수 (0) | 2021.06.16 |
[백준/Python]9251_LCS (0) | 2021.06.16 |
[백준/Python]10451_순열 사이클 (0) | 2021.06.15 |