Where who wants to meet someone
백준 Swift [9012] 괄호 본문
728x90
난이도
실버 IV
문제
https://www.acmicpc.net/problem/9012
내 답안
var vpsStack = [String]()
var vpsCount = 0
func test(with arr: [String]) -> String {
vpsStack.removeAll()
vpsCount = 0
for i in arr.indices {
vpsStack.append(arr[i])
if arr[i] == "(" {
vpsCount += 1
} else {
vpsCount -= 1
}
if vpsCount == -1 {
return "NO"
}
}
return vpsCount == 0 ? "YES" : "NO"
}
for _ in 1...Int(readLine()!)! {
let input = readLine()!.map { String($0) }
print(test(with: input))
}
- 1) 괄호를 담을 vpsStack과 짝이 맞는지를 카운팅할 vpsCount 프로퍼티를 생성
2) 입력받은 input을 가지고 test 메서드를 수행
3) test 메서드에서는 vpsStack과 vpsCount를 초기화
4) for문을 돌며 각 요소를 stack에 추가하는데, 여는 괄호라면 count를 1 증가시키고, 닫는 괄호라면 1 감소시키는 조건문을 사용하여 짝이 맞는지 확인을 해주었고, count가 -1이라면(여는 괄호가 없이 닫는 괄호가 나온 경우) VPS가 될 수 없으므로 바로 NO를 반환해주었다
5) -1이 아닌 경우에는 count를 확인하여 0이면(짝이 맞으면) YES를, 0이 아니면(짝이 맞지 않으면) NO를 반환하였다.
'백준 알고리즘 문제 기록 > 스택, 큐, 덱' 카테고리의 다른 글
백준 Swift [2164] 카드2 (0) | 2023.08.25 |
---|---|
백준 Swift [12789] 도키도키 간식드리미 (2) | 2023.08.24 |
백준 Swift [4949] 균형잡힌 세상 (0) | 2023.08.22 |
백준 Swift [10773] 제로 (0) | 2023.08.22 |
백준 Swift [28278] 스택 2 (0) | 2023.08.22 |