Where who wants to meet someone
올바른 괄호 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=swift
내 답안 / 다른 사람들의 답안
import Foundation
func solution(_ s:String) -> Bool
{
var count: Int = 0
for cha in s {
if cha == "(" && count >= 0 {
count += 1
} else if cha == ")" && count >= 0 {
count -= 1
} else {
return false
}
}
return count == 0 ? true : false
}
- 입력된 각 글자를 비교하는데, count가 0 이상일 때 '('라면 count에 1을 더하고, ')'이면 -1을 빼주는 식으로 체크를 했다. 그렇게 하면 위 조건이 아닐 때('('가 나왔는데 count가 음수인 경우, ')'인데 count가 음수인 경우)를 걸러낼 수 있다.
- 위의 else에 해당하는 조건들은 전부 짝이 맞지 않는 경우이기에 바로 false를 반환한다
- if, else if 조건에 모두 해당하여 for문이 끝났을 때, count 값이 0이라면 짝이 맞으므로 true를, 아니라면 짝이 맞지 않으므로 false를 반환한다.
import Foundation
func solution(_ s:String) -> Bool
{
var ans:Bool = false
var openCnt: Int = 0, closeCnt: Int = 0
for ch in s {
switch ch {
case "(":
openCnt += 1
case ")":
closeCnt += 1
default:
break
}
guard openCnt >= closeCnt else {
break
}
}
ans = openCnt == closeCnt
return ans
}