반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 백준 BOJ - 9012 괄호 문제를 풀었습니다.
목차
Github
GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘
스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub.
github.com
문제 링크
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
풀이
해당 문제는 스택을 이용한 문제입니다.
사실 배열이 아닌 Int count를 해서 풀 수도 있지만 배열을 이용해 풀어보고 싶었습니다.
"("가 들어오면 무조건 append, 짝이 맞지 않는 ")"가 들어오면 append를 했습니다.
YES, NO는 배열이 비어있느냐 아니냐를 기준으로 판단했습니다.
따라서 짝이 맞아 모든 괄호가 pop이 된다면 YES가 출력됩니다.
전체 코드
import Foundation
let count = Int(readLine()!)!
var stack: [Character] = []
for _ in 0..<count {
stack = []
let input = String(readLine()!)
for s in input {
if s == "(" {
stack.append(s)
} else if s == ")" {
guard let pop = stack.last, pop == "(" else {
stack.append(s)
break
}
stack.removeLast()
}
}
print(stack.isEmpty ? "YES" : "NO")
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형