

생각
- 입력 길이는 항상 짝수
- {}는 안정적이지만 }{는 안정적이지 않다
- 연산은 열린걸 닫힌걸로, 닫힌걸 열린걸로 변경하는것만 가능하다.
- 스택에 괄호를 넣는다.
- }를 넣으려 할 때 { 가 스택에 있다면 pop
- 해당 문자열이 끝났을 때 스택을 확인
- {{만 남아있다면 하나만 바꾼다. -1
- }}만 남아있다면 하나만 바꾼다. -1
- }{가 남아있다면 두 번 바꾼다. -2
- 횟수 체크 후 pop
- 스택이 비면 횟수를 리턴, 출력.
코드
import Foundation
func stableCheck(line: String) -> Int{
var stack = [Character]()
for item in line{
if(stack.isEmpty){
stack.append(item)
}
else if(item == "}"){
if(stack.last == "{"){
stack.removeLast()
}else{
stack.append(item)
}
}else{
stack.append(item)
}
}
if stack.isEmpty{
return 0
}else{
var answer: Int = 0
while(!stack.isEmpty){
let a = stack.removeLast()
let b = stack.removeLast()
if(a == "{"){
if(b == "}"){
answer += 2
}
else if(b == "{"){
answer += 1
}
}else{
answer += 1
}
}
return answer
}
}
func printResult(result: [Int]){
for(index, item) in result.enumerated(){
print("\(index + 1). \(item)")
}
}
var result = [Int]()
while let line = readLine(){
if(line.contains("-")){
break
}
result.append(stableCheck(line: line))
}
printResult(result: result)
