ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

10973๋ฒˆ: ์ด์ „ ์ˆœ์—ด

์ฒซ์งธ ์ค„์— ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ˆœ์—ด์˜ ์ด์ „์— ์˜ค๋Š” ์ˆœ์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ, ์‚ฌ์ „์ˆœ์œผ๋กœ ๊ฐ€์žฅ ์ฒ˜์Œ์— ์˜ค๋Š” ์ˆœ์—ด์ธ ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 ์•ž์„œ ํ‘ผ 10972 ๋‹ค์Œ ์ˆœ์—ด์— ๋Œ€ํ•œ ๋กœ์ง์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ๋ถ€๋“ฑํ˜ธ ๋ฐฉํ–ฅ๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

์ฝ”๋“œ

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)
728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€