MUKER_DEV with iOS

[swift] ๋ฐฑ์ค€ - 3048๋ฒˆ: ๊ฐœ๋ฏธ ๋ณธ๋ฌธ

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

[swift] ๋ฐฑ์ค€ - 3048๋ฒˆ: ๊ฐœ๋ฏธ

MUKER 2023. 8. 21. 10:13
๋ฌธ์ œ ๋งํฌ
 

3048๋ฒˆ: ๊ฐœ๋ฏธ

T์ดˆ๊ฐ€ ์ง€๋‚œ ํ›„์— ๊ฐœ๋ฏธ์˜ ์ˆœ์„œ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ฐœ๋ฏธ ๊ทธ๋ฃน์€ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์›€์ง์ด๊ณ , ๋‘ ๋ฒˆ์งธ ๊ทธ๋ฃน์€ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ธ๋‹ค.

www.acmicpc.net


๋ฌธ์ œ

๊ฐœ๋ฏธ๊ฐ€ ์ผ๋ ฌ๋กœ ์ด๋™ํ•  ๋•Œ, ๊ฐ€์žฅ ์•ž์˜ ๊ฐœ๋ฏธ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๊ฐœ๋ฏธ๋Š” ๋ชจ๋‘ ์•ž์— ๊ฐœ๋ฏธ๊ฐ€ ํ•œ ๋งˆ๋ฆฌ์”ฉ ์žˆ๋‹ค.

์„œ๋กœ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•˜๋˜ ๋‘ ๊ฐœ๋ฏธ ๊ทธ๋ฃน์ด ์ข์€ ๊ธธ์—์„œ ๋งŒ๋‚ฌ์„ ๋•Œ, ๊ฐœ๋ฏธ๋Š” ์–ด๋–ป๊ฒŒ ์ง€๋‚˜๊ฐˆ๊นŒ?

์ตœ๊ทผ ์—ฐ๊ตฌ์— ์˜ํ•˜๋ฉด ์œ„์™€ ๊ฐ™์€ ์ƒํ™ฉ์ด ๋ฒŒ์–ด์ง€๋ฉด ๊ฐœ๋ฏธ๋Š” ์„œ๋กœ๋ฅผ ์ ํ”„ํ•ด์„œ ๋„˜์–ด๊ฐ„๋‹ค๊ณ  ํ•œ๋‹ค.

์ฆ‰, ๋‘ ๊ทธ๋ฃน์ด ๋งŒ๋‚ฌ์„ ๋•Œ, 1์ดˆ์— ํ•œ๋ฒˆ์”ฉ ๊ฐœ๋ฏธ๋Š” ์„œ๋กœ๋ฅผ ๋›ฐ์–ด ๋„˜๋Š”๋‹ค. (ํ•œ ๊ฐœ๋ฏธ๊ฐ€ ๋‹ค๋ฅธ ๊ฐœ๋ฏธ๋ฅผ ๋›ฐ์–ด ๋„˜๊ณ , ๋‹ค๋ฅธ ๊ฐœ๋ฏธ๋Š” ๊ทธ๋ƒฅ ์ „์ง„ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋„ ๋œ๋‹ค)

ํ•˜์ง€๋งŒ ๋ชจ๋“  ๊ฐœ๋ฏธ๊ฐ€ ์ ํ”„๋ฅผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ž์‹ ์˜ ์•ž์— ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ด๋˜ ๊ฐœ๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ ํ”„๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๊ทธ๋ฃน์ด ABC๋กœ ์›€์ง์ด๊ณ , ๋‘ ๋ฒˆ์งธ ๊ทธ๋ฃน์˜ ๊ฐœ๋ฏธ๊ฐ€ DEF์ˆœ์œผ๋กœ ์›€์ง์ธ๋‹ค๊ณ  ํ•˜์ž. ๊ทธ๋Ÿผ, ์ข์€ ๊ธธ์—์„œ ๋งŒ๋‚ฌ์„ ๋•Œ, ๊ฐœ๋ฏธ์˜ ์ˆœ์„œ๋Š” CBADEF๊ฐ€ ๋œ๋‹ค. 1์ดˆ๊ฐ€ ์ง€๋‚ฌ์„ ๋•Œ๋Š” ์ž์‹ ์˜ ์•ž์— ๋ฐ˜๋Œ€๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ด๋Š” ๊ฐœ๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฐœ๋ฏธ๋Š” A์™€ D๋‹ค. ๋”ฐ๋ผ์„œ, ๊ฐœ๋ฏธ์˜ ์ˆœ์„œ๋Š” CBDAEF๊ฐ€ ๋œ๋‹ค. 2์ดˆ๊ฐ€ ๋˜์—ˆ์„ ๋•Œ, ์ž์‹ ์˜ ์•ž์— ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ด๋Š” ๊ฐœ๋ฏธ๋Š” B,D,A,E๊ฐ€ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๊ฐœ๋ฏธ์˜ ์ˆœ์„œ๋Š” CDBEAF๊ฐ€ ๋œ๋‹ค.

T์ดˆ๊ฐ€ ์ง€๋‚œ ํ›„์— ๊ฐœ๋ฏธ์˜ ์ˆœ์„œ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์— ์ฒซ ๋ฒˆ์งธ ๊ทธ๋ฃน์˜ ๊ฐœ๋ฏธ์˜ ์ˆ˜ N1๊ณผ ๋‘ ๋ฒˆ์งธ ๊ทธ๋ฃน์˜ ๊ฐœ๋ฏธ์˜ ์ˆ˜ N2๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

๋‹ค์Œ ๋‘ ๊ฐœ ์ค„์—๋Š” ์ฒซ ๋ฒˆ์งธ ๊ทธ๋ฃน๊ณผ ๋‘ ๋ฒˆ์งธ ๊ทธ๋ฃน์˜ ๊ฐœ๋ฏธ์˜ ์ˆœ์„œ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ๊ฐœ๋ฏธ๋Š” ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‘ ๊ทธ๋ฃน์—์„œ ์ค‘๋ณต๋˜๋Š” ์•ŒํŒŒ๋ฒณ์€ ์—†๋‹ค.

๋งˆ์ง€๋ง‰ ์ค„์—๋Š” T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (0 ≤ T ≤ 50)

์ถœ๋ ฅ

T์ดˆ๊ฐ€ ์ง€๋‚œ ํ›„์— ๊ฐœ๋ฏธ์˜ ์ˆœ์„œ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ฐœ๋ฏธ ๊ทธ๋ฃน์€ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์›€์ง์ด๊ณ , ๋‘ ๋ฒˆ์งธ ๊ทธ๋ฃน์€ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ธ๋‹ค.

์˜ˆ์ œ


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

import Foundation

let N = readLine()!.split { $0==" " }.map { Int($0)! }
var ant = Array(readLine()!).reversed() + Array(readLine()!)
var index = Array(repeating: 0, count: N[0]) + Array(repeating: 1, count: N[1])

for _ in 0..<Int(readLine()!)! {
	var now = 0
	while now < ant.count-1 {
		if index[now] == index[now+1] || index[now] > index[now+1] {
			now += 1
		} else {
			index.swapAt(now, now+1)
			ant.swapAt(now, now+1)
			now += 2
		}
	}
}
print(String(ant))

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

  • ๊ฐœ๋ฏธ๋“ค์€ ์„œ๋กœ ๋งˆ์ฃผ์น˜๋ฉฐ ์ง€๋‚˜๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ๋ฒˆ์งธ ๊ทธ๋ฃน์€ ๊ฑฐ๊พธ๋กœ ์„ธ์›Œ ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ฒซ๋ฒˆ์งธ ๊ทธ๋ฃน๊ณผ ๋‘๋ฒˆ์งธ ๊ทธ๋ฃน์ž„์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ index๋ผ๋Š” ๋ฐฐ์—ด์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฏธ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ํ˜„์žฌ index์™€ ๋‹ค์Œ ์ˆœ์„œ์˜ ๊ฐœ๋ฏธ๊ฐ€ ๊ฐ™๊ฑฐ๋‚˜, ํ˜„์žฌ index์˜ ๊ฐœ๋ฏธ๊ฐ€ ๊ทธ๋ฃน 1์ผ ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ index๋กœ ํƒ์ƒ‰์„ ๊ทธ๋Œ€๋กœ ์ง„ํ–‰ํ•˜๊ณ 
  • ํ˜„์žฌ index์˜ ๊ฐœ๋ฏธ์™€ ๋‹ค์Œ ์ˆœ์„œ์˜ ๊ฐœ๋ฏธ๊ฐ€ ๋‹ค๋ฅด๊ฑฐ๋‚˜ ํ˜„์žฌ index์˜ ๊ฐœ๋ฏธ๊ฐ€ ๊ทธ๋ฃน0์ผ๊ฒฝ์šฐ ์„œ๋กœ๋ฅผ ๋ฐ”๊ฟ”์ฃผ๊ณ  index ์ˆœ์„œ๋ฅผ ํ•œ๋ฒˆ ๊ฑด๋„ˆ ๋›ฐ์–ด ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.