[백준 9935] 문자열 폭발

Junyoung Park·2022년 4월 22일
0

코딩테스트

목록 보기
390/631
post-thumbnail

1. 문제 설명

문자열 폭발

2. 문제 분석

스택을 통해 마지막 부분의 문자가 폭발하는 문자열일 때 팝하는 아이디어를 떠올리는 게 문자. 사실 아이디어보다는 적절한 구현 방식으로 시간 초과가 나지 않는 게 두 번째 관건이었다.

  • 처음 제출한 코드에서는 시간 초과가 났는데, 짐작컨대 배열의 joined() 메소드가 시간적으로 효율적이지 않았던 것 같다. 배열 자체를 비교하는 방식으로 변경했다. (스택 길이가 폭발 문자열보다 크면 뒷부분에서 폭발 문자열 크기만큼 스택의 뒷부분을 문자열로 만들어 비교하는데, 이 과정에서 부수적인 오버헤드가 컸던 것 같다)

3. 나의 풀이

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: "")
    }
}
profile
JUST DO IT

0개의 댓글