Bibi's DevLog ๐ค๐
[๋ฐฑ์ค 10811] ๋ฐ๊ตฌ๋ ๋ค์ง๊ธฐ (Swift) ๋ณธ๋ฌธ
[๋ฐฑ์ค 10811] ๋ฐ๊ตฌ๋ ๋ค์ง๊ธฐ (Swift)
๋น๋น bibi 2023. 1. 19. 18:17n๊ฐ์ ๋ฐ๊ตฌ๋๋ค์ด ์์ ๋, m๋ฒ ๋ฐ๊ตฌ๋ ์์๋ฅผ ์ญ์์ผ๋ก ๋ง๋ ๋ค.
m๊ฐ์ ์ํ๋ง๋ค i๋ถํฐ j๊น์ง๋ผ๋ ๋ฒ์๊ฐ ์ฃผ์ด์ง๋ค. (1 โค i โค j โค n)
i == j
์ผ ๋๋ ๋ฐ๊ฟ ํ์๊ฐ ์๋ค.j - i == 1
์ผ ๋๋ ๋ ์์์ ์๋ฆฌ๋ฅผ ๋ฐ๊ฟ์ค๋ค- ``swapAt(*:*:)` ์ฌ์ฉ
- ๋๋จธ์ง ๊ฒฝ์ฐ์๋ i๋ถํฐ j๊น์ง์ ๋ฐ๊ตฌ๋๋ค์ ๋ค์ง์ด์ผ ํ๋ค.
- i ๋ถํฐ j๊น์ง ๋ค์ง๋ ๋ฐ๊ตฌ๋๋ค ์ธ์ ๋๋จธ์ง ๋ฐ๊ตฌ๋๋ค์ ๊ทธ๋๋ก ์ ์ง๋๋ค.
- ๋ค์ง๋ ๋ฐ๊ตฌ๋๋ค์ ์ ๋ถ๋ถ = head : ๊ทธ๋๋ก ์ ์ง
- ๋ค์ง๋ ๋ฐ๊ตฌ๋๋ค = reversed
reversed()
์ฌ์ฉ
- ๋ค์ง๋ ๋ฐ๊ตฌ๋๋ค์ ๋ท ๋ถ๋ถ = tail : ๊ทธ๋๋ก ์ ์ง
- head + reversed + tail ์ ๋ถ๋ถ ๋ฐฐ์ด๋ค์ ๋ชจ๋ ํฉ์ณ ํ๋์ ๋ฐฐ์ด๋ก ๋ง๋ ๋ค์, ๊ทธ ๋ฐฐ์ด์ ์๋ก์ด ๋ฐ๊ตฌ๋๋ค๋ก ํ ๋นํ๋ค.
์ด๋ฒ ๋ฌธ์ ์์๋ ๋ฐ๊ตฌ๋๋ฅผ ๋ค์ง๋ ์์ ์์ฒด๊ฐ ์ค๋ ๊ฑธ๋ฆฌ์ง ์๋๋ก, ๊ธฐ๋ณธ์ ๊ณต ๋ฉ์๋๋ค ์ค ์๊ฐ๋ณต์ก๋๊ฐ ๋ฎ์ ๋ฉ์๋๋ค ์์ฃผ๋ก ์ฌ์ฉํ๋ ค ํ๋ค.
๋ฌธ์ ํ์ด์ ์ฌ์ฉํ ``swapAt(*:*:)์
reversed()` ๋ชจ๋ O(1) ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ ธ ์ฌ์ฉํ๊ธฐ ์ข์๋ค. (์ ๋ฆฌํ ๋ฌธ์)
ํ์ด (๋์ ํ์ด)
let inputArr = readLine()!.split(separator: " ").map { Int($0)! }
let n = inputArr[0]
let m = inputArr[1]
var baskets = Array(1...n)
for _ in (1...m) {
let exchange = readLine()!.split(separator: " ").map { Int($0)! }
let start = exchange[0] - 1
let end = exchange[1] - 1
if start == end {
continue
}
if end - start == 1 {
baskets.swapAt(start, end)
continue
}
let head = Array(baskets[baskets.startIndex..<start])
let tail = Array(baskets[end+1..<baskets.endIndex])
let reversed = Array( baskets[start...end].reversed())
baskets = head + reversed + tail
}
baskets.forEach { print($0, terminator: " ")}
๋ค๋ฅธ ํ์ด
๊ฐ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋ ํ์ด ์ค์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํผ ์ฝ๋๋ ์์๋ค.
์ด ๊ฒฝ์ฐ i๋ถํฐ j๋ผ๋ ๋ฒ์์์ โi์ j ์๋ฆฌ ๋ฐ๊พธ๊ธฐ โ i+1๊ณผ j-1 ์๋ฆฌ ๋ฐ๊พธ๊ธฐ โ i+2์ j-2 ์๋ฆฌ ๋ฐ๊พธ๊ธฐ โฆโ ์ ๊ฐ์ ์์ผ๋ก ์ฃผ์ด์ง ๋ฐ๊ตฌ๋๋ฅผ ๋ค์ง๊ณ , i+n์ด j+n๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ง ๋๊น์ง ๋ฐ๋ณตํ๋ค.
์ง์ ๋ค์ง์ง ์๊ณ ํ ์์ฉ ์๋ฆฌ๋ฅผ ๋ฐ๊ฟ๋ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ค์ง์ ์ ์๋ค๋ ์ ์์ ์ข์ ๊ฒ ๊ฐ๋ค.
let input = readLine()!.split(separator: " ").map { Int($0)! }
let n = input[0], m = input[1]
var basket = [Int](0...n)
for _ in 0..<m {
let input = readLine()!.split(separator: " ").map { Int($0)! }
var start = input[0], end = input[1]
while start < end {
basket.swapAt(start, end)
start += 1
end -= 1
}
}
basket[1...].forEach { print($0, terminator: " ") }
๋ ๋ค๋ฅธ ํ์ด์์, ๋ง์ง๋ง ์ค ์ถ๋ ฅ ๋ถ๋ถ์ ์ข์ ์ฝ๋๊ฐ ์์๋ค.
๋ด ๋ฐฉ์์ ๋์ ๊ณต๋ฐฑ์ด ์๊ธฐ๋๋ฐ, ์๋ ๋ฐฉ์์ ๊ณต๋ฐฑ์ด ์๊ธฐ์ง ์๋๋ค๋ ์ ์์ ์ข๋ค. ๋๋ joined
๋ฅผ ์ ํ์ฉํด ๋ด์ผ๊ฒ ๋ค.
// ๋ด ๋ฐฉ์
baskets.forEach { print($0, terminator: " ")}
// ์๋ก์ด ๋ฐฉ์
print(baskets.map{ String($0) }.joined(separator: " "))
'ํ๋ก๊ทธ๋๋ฐ > ์๊ณ ๋ฆฌ์ฆ ํ์ด Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 11006] ๋จ์ฑ์ด์ ๋ญ์ฅ (Swift) (0) | 2023.01.30 |
---|---|
[๋ฐฑ์ค 10987] ๋ชจ์์ ๊ฐ์ (Swift) (0) | 2023.01.26 |
[Swift] BFS ์์ ์ ํ์ด (๋ฐฑ์ค 2178 ๋ฏธ๋ก ํ์) (0) | 2023.01.16 |
[Swift] DFS ์์ ์ ํ์ด (Softeer ์ฅ์ ๋ฌผ ์ธ์ ํ๋ก๊ทธ๋จ) (0) | 2023.01.16 |
[๋ฐฑ์ค 10539] ์๋น์ด์ ์์ด (Swift) (0) | 2023.01.11 |