반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 백준 BOJ - 9935 문자열 폭발 폭발 문제를 풀었습니다.
목차
Github
문제 링크
https://www.acmicpc.net/problem/9935
풀이
이번 문제는 스택을 이용한 문제입니다.
지금까지는 top 1개의 아이템만 비교했다면 이번 문제는 input에 대해 체크해야 할 아이템 개수가 달라집니다.
추가로 이번 문제는 시간제한이 꽤 빡세다고 느꼈습니다.
통과를 한 후에도 여러 가지로 시도를 해봤는데 다 시간제한이 나더라고요.
input만큼 append를 하고 input과 폭발 단어의 마지막과 비교합니다.
동일하면 stack의 길이만큼 아이템을 가져와서 폭발 단어와 동일한지 확인합니다.
폭발 단어라면 그 길이만큼 pop을 해줍니다.
마지막에 스택이 비어있다면 FRULA, 아니라면 stack을 출력해줍니다.
전체 코드
//9935 문자열 폭발
import Foundation
var input = String(readLine()!)
let bomb = String(readLine()!)
var stack: [Character] = []
for s in input {
stack.append(s)
if s == bomb.last! {
let count = stack.count
if count >= bomb.count && String(stack[(count-bomb.count)...]) == bomb {
(0..<bomb.count).forEach { _ in
stack.popLast()
}
}
}
}
print(stack.isEmpty ? "FRULA" : String(stack))
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형