반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 프로그래머스(Lv.2) - 올바른 괄호 문제를 풀었습니다.
목차
Github
GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘
스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub.
github.com
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12909
코딩테스트 연습 - 올바른 괄호
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은
programmers.co.kr
풀이
스택 문제의 정석입니다.
"("이 들어오면 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))
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형