반응형
○
스택 Silver 4
백준 4949 균형잡힌 세상
종료 조건 "." 이 들어올 때까지 문장을 input 으로 받아서 알파벳은 무시하고 [] () 괄호 짝만 맞추면 되는 문제.
( 혹은 [ 이면 push
] 혹은 ) 이면 확인하고 pop
마지막에 스택 남는거 확인하고 리턴
while true {
let input = readLine()!
if input == "." { break }
else {
print(isBalanced(input))
}
}
func isBalanced(_ input: String) -> String {
var stack: [Character] = []
for i in input {
switch i {
case "(", "[":
stack.append(i)
case ")":
if stack.last == "(" {
stack.removeLast()
} else {
return "no"
}
case "]":
if stack.last == "[" {
stack.removeLast()
} else {
return "no"
}
default:
break
}
}
return stack.isEmpty ? "yes" : "no"
}
반복문 돌릴 때, 위 처럼 while true 로 무한 루프 돌리다가 "." 를 input 으로 받으면 종료해줘도 되지만
다음과 같이 아예 종료 조건을 while 조건 안에 넣으니 훨씬 간결해 보인다.
while let input = readLine(), input != "." {
print(isBalanced(input))
}
728x90
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[Swift 알고리즘] 18258 큐2 - 개빡침🤬 (feat. 더블 스택 큐 구현방법) (0) | 2023.03.27 |
---|---|
[Swift 알고리즘] 백준 1874 스택 수열 (0) | 2023.03.11 |
[Swift 알고리즘] 백준 10773 제로 + 9012 괄호 (0) | 2023.03.08 |
[Swift 알고리즘] 백준 10828 스택 (0) | 2023.03.07 |
[Swift 알고리즘] 백준 2644 촌수계산 (0) | 2023.01.17 |