스택을 통해 마지막 부분의 문자가 폭발하는 문자열일 때 팝하는 아이디어를 떠올리는 게 문자. 사실 아이디어보다는 적절한 구현 방식으로 시간 초과가 나지 않는 게 두 번째 관건이었다.
joined()
메소드가 시간적으로 효율적이지 않았던 것 같다. 배열 자체를 비교하는 방식으로 변경했다. (스택 길이가 폭발 문자열보다 크면 뒷부분에서 폭발 문자열 크기만큼 스택의 뒷부분을 문자열로 만들어 비교하는데, 이 과정에서 부수적인 오버헤드가 컸던 것 같다)import Foundation
let s = String(readLine()!)
let ex = Array(String(readLine()!))
var stack = Array<Character>()
for letter in s{
stack.append(letter)
if stack.count >= ex.count{
if stack[stack.endIndex-ex.count..<stack.endIndex] == ex[0..<ex.endIndex]{
for _ in 0..<ex.count{
stack.popLast()
}
}
}
}
if stack.isEmpty == true{
print("FRULA")
} else {
for letter in stack{
print(letter, terminator: "")
}
}