반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 프로그래머스(Lv.2) - 올바른 괄호 문제를 풀었습니다.
목차
Github
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12909
풀이
스택 문제의 정석입니다.
"("이 들어오면 append() 해줍니다.
")"일 때는 두 가지로 나뉘는데요.
stack의 top이 "("이면 pop을 해주고 ")"이면 잘못된 괄호로 판단합니다.
"()"이 한 쌍이 되어 사라지기 때문에 ")"이 연속으로 들어왔다면 잘못된 괄호이기 때문이죠.
전체 코드
import Foundation
func solution(_ s:String) -> Bool
{
var ans:Bool = false
var stack: [Character] = []
for letter in s {
if letter == "(" {
stack.append(letter)
} else {
if let top = stack.last, top == "(" {
stack.popLast()
} else {
return false
}
}
}
ans = stack.isEmpty
return ans
}
let s = "))(("
print(solution(s))
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형