๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/๊ตฌํ˜„

[๋ฐฑ์ค€]10972๋ฒˆ: ๋‹ค์Œ ์ˆœ์—ด / 10973๋ฒˆ: ์ด์ „ ์ˆœ์—ด

by syLim___ 2023. 5. 9.
728x90

https://www.acmicpc.net/problem/10973

 

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

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

www.acmicpc.net

https://www.acmicpc.net/problem/10972

 

10972๋ฒˆ: ๋‹ค์Œ ์ˆœ์—ด

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

www.acmicpc.net

์ด์ „ ์ˆœ์—ด ์ฐพ๊ธฐ

์˜ˆ์‹œ ) 2 3 1 4 5 ์˜ ์ด์ „ ์ˆœ์—ด ์ฐพ๊ธฐ
 - ์ˆœ์—ด์˜ ๋งจ ๋(์˜ค๋ฅธ์ชฝ)์—์„œ๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๋ฉฐ ์™ผ์ชฝ ์ˆซ์ž๊ฐ€ ์˜ค๋ฅธ์ชฝ ์ˆซ์ž๋ณด๋‹ค ์ฒ˜์Œ์œผ๋กœ ์ปค์ง€๊ฒŒ ๋˜๋Š” ๋ถ€๋ถ„์„ ์ฐพ๋Š”๋‹ค.

    2 3 1 4 5

 - ํฐ ์ˆ˜๋ฅผ ๋’ค๋กœ ๋ณด๋‚ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํฐ ์ˆ˜์™€ ์ž๋ฆฌ ๊ตํ™˜ํ•  ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค.

    ์˜ˆ์‹œ์—์„œ ํฐ ์ˆ˜๋Š” 3์ด๊ณ , ์šฐ๋ฆฌ๋Š” ์ด์ „ ์ˆœ์—ด์„ ๊ตฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 3๋ณด๋‹ค ์ž‘์€ ์ˆ˜๋ฅผ ๊ตํ™˜ํ•ด์•ผ ํ•œ๋‹ค.

    ๋”ฐ๋ผ์„œ ์ˆœ์—ด์˜ ๋งจ ์˜ค๋ฅธ์ชฝ์—์„œ๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๋ฉฐ, ํฐ ์ˆ˜(์˜ˆ์‹œ์—์„œ๋Š” 3)๋ณด๋‹ค ์ž‘์€ ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค.

    2 3 1 4 5

 - ์•ž ๋‹จ๊ณ„์—์„œ ์ฐพ์€ ์ž‘์€ ์ˆ˜ 1์„ ์›๋ž˜ 3์˜ ์ž๋ฆฌ๋กœ ์˜ฎ๊ฒจ์ค€๋‹ค.

    2 1 3 4 5

 - ์ด์ œ ์ˆœ์—ด์˜ 2 1 ๊นŒ์ง€ ์™„์„ฑํ•˜์˜€๋‹ค.

    2 1 x x x ์ธ ์ˆœ์—ด ์ค‘ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ˆœ์—ด์„ ์ฐพ๋Š” ๊ฒƒ์ด ์ตœ์ข… ๋ชฉํ‘œ์ด๋ฏ€๋กœ, ๋‚˜๋จธ์ง€ ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„์„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์ค€๋‹ค.

    2 1 5 4 3


python  ์ฝ”๋“œ

import sys
input = sys.stdin.readline

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

if n==1:
  print(-1)
  exit()
  
# ์ˆœ์—ด์˜ ๋งจ ์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ, ์™ผ์ชฝ๊ฐ’ > ์˜ค๋ฅธ์ชฝ๊ฐ’ ๋งŒ์กฑํ•˜๋Š” ์ธ๋ฑ์Šค ์ฐพ๊ธฐ
idx = n
for i in range(n-1,0,-1):
  if data[i-1] > data[i]:
    idx = i-1
    break 
# ์—†์œผ๋ฉด -1์„ ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒ
if idx == n:
  print(-1)
  exit()

# ์ž๋ฆฌ๊ตํ™˜ํ•˜๊ธฐ
for i in range(n-1,idx,-1):
  if data[i] < data[idx]:
    data[i], data[idx] = data[idx], data[i]
    break

# ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ๋ฐ ๊ฒฐ๊ณผ ์ถœ๋ ฅ
answer = data[:idx+1] + sorted(data[idx+1:],reverse=True)
for i in range(n-1):
  print(answer[i],end=' ')
print(answer[-1])

๋‹ค์Œ ์ˆœ์—ด ์ฐพ๊ธฐ

 - ์ด์ „ ์ˆœ์—ด๊ณผ ๊ฐ™์€ ์›๋ฆฌ์ด๋‹ค. ์ ์ ˆํžˆ ๋“ฑํ˜ธ๋งŒ ๋ฐ”๊พธ์–ด ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

728x90