ν°μ€ν 리 λ·°
λ¬Έμ
λ¬Έμ νμ΄
μ΄ λ¬Έμ λ νΉμ μμ΄μ΄ μ£Όμ΄ μ§ λ λ€μ μμ΄μ μ°Ύλ λ¬Έμ μ΄λ€. c++μ κ²½μ° stlμ next permuationμ΄ μκΈ°μ μ½κ² ν μ μμ§λ§, νμ΄μ¬μ κ²½μ° μ§μ ꡬννμ¬μΌ νλ€. λ°λΌμ νμ΄μ¬μΌλ‘ νκ² λλ©΄ λ¨μν λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ κ²μ΄ μλ μ΄λ€μμΌλ‘ λμνλμ§ μ μ μλ€.
μμμ κ²½μ° μ£Όμ΄μ§ μμ΄μ 1, 2, 3, 4λ‘ ν΄λΉ μμ΄μ λ€μ μμ΄μ 1, 2, 4, 3μ΄λ€. λͺ¨λ μμ΄μ λμ΄νκ³ λ€μ μμ΄μ μ°Ύλκ²μ λΉν¨μ¨μ μ΄λ€. λ°λΌμ κ·Έλ¦Όκ³Ό κ°μ λ°©μμ ν΅ν΄ λ³΄λ€ ν¨μ¨μ μΌλ‘ λ€μ μμ΄μ μ°Ύμ μ μλ€.
-
λ€μμ λΆν° μμνμ¬, κ°μ΄ μ¦κ°νλμ§ νμΈνμ¬ i κ°μ κ²°μ νλ€.
- μμμμλ κ°μ΄ κ³μ μ¦κ°νλ―λ‘, κ²°μ λ i κ°μ 3μ΄λ€.
- μ¦κ°νλ μκ° ν λ²λ μλ€λ©΄, λ€μ μμ΄μ΄ μλ κ²½μ°μ΄λ€.
-
λ€μμ λΆν° μμνμ¬ κ²°μ λ i κ° - 1 λΆν° μμ°¨μ μΌλ‘ ν° κ°μ΄ μλμ§ νμΈνλ€.
-
iμ j κ°μ΄ κ²°μ λλ€λ©΄ ν΄λΉ κ°λ€μ swapνλ€.
-
λ§μ§λ§μΌλ‘ i, jμ μμΉν κ°λ€μ λ°μ μν¨λ€.
μ΄λ €μ΄ μκ³ λ¦¬μ¦μ΄ μλλ―λ‘, λ‘μ§μ κΈ°μ΅νκ³ μμ±ν μ μλ€λ©΄ λ€μν λ¬Έμ λ₯Ό ν΄κ²° ν μ μλ€.
μ½λ
from sys import stdin
def prev_permutation(lst):
length = len(lst) - 1
i, j, k = [length for _ in range(3)]
while i > 0 and lst[i - 1] >= lst[i]:
i -= 1
if not i:
return 0
while lst[i - 1] >= lst[j]:
j -= 1
lst[i - 1], lst[j] = lst[j], lst[i - 1]
while i < k:
lst[i], lst[k] = lst[k], lst[i]
i += 1
k -= 1
return lst
if __name__ == '__main__':
n = int(stdin.readline())
nums = list(map(int, stdin.readline().split()))
ret = prev_permutation(nums)
print(-1) if not ret else print(*nums)
'π¨βπ» μ½λ©ν μ€νΈ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°±μ€: 10974 λͺ¨λ μμ΄ (0) | 2020.07.15 |
---|---|
λ°±μ€: 10973 μ΄μ μμ΄ (0) | 2020.07.15 |
λ°±μ€: 15663 Nκ³Ό M (9) (0) | 2020.07.14 |
λ°±μ€: 15652 Nκ³Ό M (4) (0) | 2020.07.14 |
λ°±μ€: 15651 Nκ³Ό M (3) (0) | 2020.07.14 |