MUKER_DEV with iOS

[swift] ๋ฐฑ์ค€ - 10973๋ฒˆ: ์ด์ „ ์ˆœ์—ด ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/BAEKJOON

[swift] ๋ฐฑ์ค€ - 10973๋ฒˆ: ์ด์ „ ์ˆœ์—ด

MUKER 2023. 8. 10. 09:26
๋ฌธ์ œ ๋งํฌ
 

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

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

www.acmicpc.net


๋ฌธ์ œ

1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆœ์—ด์ด ์žˆ๋‹ค. ์ด๋•Œ, ์‚ฌ์ „์ˆœ์œผ๋กœ ๋ฐ”๋กœ ์ด์ „์— ์˜ค๋Š” ์ˆœ์—ด์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์‚ฌ์ „ ์ˆœ์œผ๋กœ ๊ฐ€์žฅ ์•ž์„œ๋Š” ์ˆœ์—ด์€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆœ์—ด์ด๊ณ , ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์˜ค๋Š” ์ˆœ์—ด์€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆœ์—ด์ด๋‹ค.

N = 3์ธ ๊ฒฝ์šฐ์— ์‚ฌ์ „์ˆœ์œผ๋กœ ์ˆœ์—ด์„ ๋‚˜์—ดํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • 1, 2, 3
  • 1, 3, 2
  • 2, 1, 3
  • 2, 3, 1
  • 3, 1, 2
  • 3, 2, 1

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N(1 ≤ N ≤ 10,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์— ์ˆœ์—ด์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

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

์˜ˆ์ œ


์„ฑ๊ณต ํ’€์ด

let N = Int(readLine()!)!
var arr = readLine()!.split {$0==" "}.map {Int($0)!}
var num = 0, big = 0

if arr.sorted() != arr {
  for i in 0..<arr.count {
    if i + 1 < arr.count && arr[i] > arr[i+1] {
      num = i
    }
  }

  for i in (num+1)..<arr.count {
    if arr[num] > arr[i] {
      big = i
    }
  }

  arr.swapAt(num, big)
  arr[(num+1)..<arr.count].sort(by:>)
  print(arr.map{String($0)}.joined(separator: " "))
} else {
  print(-1)
}

ํ’€์ด ํ‚ค์›Œ๋“œ

  •