๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1406
1406๋ฒ: ์๋ํฐ
์ฒซ์งธ ์ค์๋ ์ด๊ธฐ์ ํธ์ง๊ธฐ์ ์ ๋ ฅ๋์ด ์๋ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ์ด ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ N์ด๊ณ , ์์ด ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ๊ธธ์ด๋ 100,000์ ๋์ง ์๋๋ค. ๋์งธ ์ค์๋ ์ ๋ ฅํ ๋ช ๋ น์ด์ ๊ฐ์
www.acmicpc.net
๋ด๊ฐ ํผ ํ์ด (1) - ์๊ฐ์ด๊ณผ!
- ์ปค์๋ฅผ ์์ง์ฌ์ผํ๋ค๋ ์๊ฐ์ผ๋ก ๋ฐฐ์ด์์ ์ธ๋ฑ์ค๋ฅผ ์๋ค๊ฐ๋ค ํ๋ ๋ฐฉ์์ผ๋ก ํ์์.
- ๋ฐฐ์ด์ ์์ง์ด๊ณ , ํ๋์ ์ฐ์ฐ์ด ์ํ๋ ๋๋ง๋ค ์ธ๋ฑ์ค์ ๋ฌธ์์ด์ ๋ฐ๊พธ์ด์ค์ผํ๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ ๊ฒ ๊ฐ์.
import Foundation
var text = Array(readLine()!)
let n = Int(readLine()!)!
var cursor = text.count
for _ in 0..<n {
var edit = readLine()!.components(separatedBy: " ")
switch edit.removeFirst() {
case "L" :
if cursor > 0 {
cursor -= 1
}
case "D" :
if cursor != text.count {
cursor += 1
}
case "B" :
if cursor != 0 {
text.remove(at:cursor-1)
cursor -= 1
}
case "P" :
var t = edit.popLast()!
text.insert(contentsOf: t , at: cursor)
cursor += 1
default :
break
}
}
print(String(text))
๋ด๊ฐ ํผ ํ์ด (2) - ๋ง์์ต๋๋ค!
์์์ ๋ฐฐ์ด๋ก ๋ฌธ์ ๋ฅผ ํ์์ ๋ ์๊ฐ ์ด๊ณผ๊ฐ ๋์์ ์ด๋ป๊ฒ ํ๋ฉด ์ค์ผ ์ ์์์ง ์๊ฐํ๋ค๊ฐ, ์ด์ ์ ํ์ด์ฌ์ผ๋ก ์ฝํ ๊ณต๋ถ๋ฅผ ํ ๋ deque์ ๊ฐ์ ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ๋ฉด ์๊ฐ์ด ์ ์ฝ๋๋ค๋ ์ฌ์ค์ ๊ธฐ์ตํ๋ค. ๊ทธ๋์ ์คํ๊ณผ ํ? ๋ฅผ ์ด์ฉํด์ ์ด๋ป๊ฒ ํ๊น, pop, remove ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ์ด์ฉํด์ ํ๊น ๊ณ ๋ฏผํ๋ค๊ฐ ์ธํฐ๋ท์ ์กฐ๊ธ ์์นํด๋ณด์๋ค.
๋ด๊ฐ ์ด์ ์ ๋ฐฐ์ด์์ ์ธ๋ฑ์ค๋ก ์ปค์๋ฅผ์์ง์๋ค๋ฉด, pop push๋ฅผ ์ด์ฉํด์ ์ปค์๋ฅผ ์์ง์ด๋ ๋ฐฉ์์ด ์์๋ค.
[left] cursor [right] ์ด๋ ๊ฒ ๊ตฌ์กฐ๋ฅผ ์๊ฐํ์ฌ ์ปค์๋ฅผ ์ผ์ชฝ์ผ๋ก ์์ง์ด๋ ๋ช ๋ น์ผ๋๋ [left] ์์ ๋งจ ๋ง์ง๋ง character๋ฅผ [right]๋ก ์์ง์ฌ์ฃผ๋ ๋ฐฉ์์ด๋ค. ์ด๋ ๊ฒ ํ๊ฒ ๋๋ฉด ๋ฐฐ์ด์ ๋ฐ๋ฅธ ์ฐ์ฐ์ด ์ผ์ด๋์ง ์๊ณ ๋จ์ํ pop/push ๋์์ผ๋ก๋ง ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ํจ์ฌ ์๊ฐ์ด ์ค์ด๋๋ ๊ฒ ๊ฐ์๋ค.
var left = Array(readLine()!)
var right: [Character] = []
let n = Int(readLine()!)!
for _ in 0..<n {
let edit = readLine()!
switch edit {
case "L":
if !left.isEmpty {
right.append(left.removeLast())
}
case "D" :
if !right.isEmpty {
left.append(right.removeLast())
}
case "B" :
if !left.isEmpty {
left.removeLast()
}
default:
left.append(edit.last!)
}
}
print(String(left+right.reversed()))
๋ฐฐ์ด๋ก ํธ๋ ๋ฐฉ์๋ณด๋ค ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํธ๋ ๋ฐฉ์์ ๋ํด์ ๋ ๊น๊ฒ ์๊ฐํ๋ ์๊ฐ์ ๊ฐ์ง ํ์๊ฐ ์์ ๊ฒ๊ฐ๋ค. ๋ฌธ์ ๋ฅผ ๋ง์ด ํ๋ฉด ๋ฌ๋ผ์ง๊ฒ์ง? ํํ
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] (Swift) 1158๋ฒ - ์์ธํธ์ค ๋ฌธ์ (0) | 2022.02.05 |
---|---|
[๋ฐฑ์ค] (Swift) 10845๋ฒ - ํ (0) | 2022.02.04 |
[๋ฐฑ์ค] (Swift) 1874๋ฒ - ์คํ ์์ด (0) | 2022.01.28 |
[๋ฐฑ์ค] (Swift) 9012๋ฒ - ๊ดํธ (0) | 2022.01.19 |
[๋ฐฑ์ค] (Swift) 9093๋ฒ - ๋จ์ด ๋ค์ง๊ธฐ (0) | 2022.01.16 |