[๋ฐฑ์ค€-10973] ์ด์ „ ์ˆ˜์—ด / Python

๐Ÿ“š Problem Solving/Baekjoon

 

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

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

www.acmicpc.net

import sys

input = sys.stdin.readline

n = int(input())
arr = list(map(int, input().split()))

k = -1
for i in range(len(arr) - 1):
    if arr[i] > arr[i + 1]:
        k = i

if k == -1:
    print(-1)
else:
    for i in range(k + 1, len(arr)):
        if arr[i] < arr[k]:
            m = i

    arr[k], arr[m] = arr[m], arr[k]

    temp = arr[k + 1 :]
    temp.sort(reverse=True)
    answer = arr[: k + 1] + temp

    for num in answer:
        print(num, end=" ")

 

ํ•ด์„ค

a[k] > a[k+1]์ด ์„ฑ๋ฆฝํ•˜๋Š” k์˜ ์ตœ๋Œ€๋ฅผ ์ฐพ๋Š”๋‹ค.

k๊ฐ€ -1์ด๋ฉด ์ด๋ฏธ ์˜ค๋ฆ„์ฐจ์ˆœ์ด ๋˜์–ด์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

 

์ธ๋ฑ์Šค k ์ดํ›„์˜ ๊ฐ’๋“ค ์ค‘ a[k] > a[m]์ด ์„ฑ๋ฆฝํ•˜๋Š” m์˜ ์ตœ๋Œ€๋ฅผ ์ฐพ๋Š”๋‹ค.

 

k์™€ m ์ž๋ฆฌ์˜ ๊ฐ’์„ ์„œ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

 

์ธ๋ฑ์Šค k ์ดํ›„์˜ ๊ฐ’๋“ค์„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.