

두 개의 스택을 사용하여, 커서의 이동에 따라 원소를 왼쪽이나 오른쪽으로 옮겨주면 되는 문제이다.
예를들어, abc 가 있을 때 "L"명령어를 받는다면
커서가 왼쪽으로 이동해야하기 때문에 ab|c 와 같이 되고
이를 스택으로 표현한다면 왼쪽 스택에 a,b 오른쪽 스택에 c가 들어가야한다.
이를 popLast( 스택의 마지막 원소를 제거하고, 해당 원소를 반환함) 과 append(해당 스택의 제일 마지막에 원소 추가함)를 사용하여 구현하였다.
import Foundation
var letters = readLine()!
let testCase = Int(readLine()!)!
var rightLetters = [Characters]()
for _ in 0..<testCase {
    let line = readLine()!.split(separator: " ")
    if line[0] == "P" {
        letters.append(contentsOf: line[1])
    } else if line[0] == "L" {
        if letters.isEmpty == false {
         rightLetters.insert(letters.popLast()!, at: 0)
        }
    } else if line[0] == "D" {
        if rightLetters.isEmpty == false {
            letters.append(rightLetters.popLast()!)
        }
    } else if line[0] == "B" {
        if letters.isEmpty == false {
            letters.removeLast()
        }
    }
}
rightLetters.reversed()
letters.forEach {
    print($0,terminator: "")
}
rightLetters.forEach {
    print($0, terminator: "")
}
import Foundation
var letters = readLine()!
let testCase = Int(readLine()!)!
var rightLetters = ""
for _ in 0..<testCase {
    let line = readLine()!
    if line == "L" {
        if !letters.isEmpty {
            rightLetters.append(letters.popLast()!)
        }
    } else if line == "D" {
        if !rightLetters.isEmpty {
            letters.append(rightLetters.popLast()!)
        }
    } else if line == "B" {
        if !letters.isEmpty {
            letters.removeLast()
        }
    } else {
        letters.append(line.last!)
    }
}
print(letters + rightLetters.reversed())