적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Algorithm/Baekjoon

[Swift 알고리즘] 백준 10773 제로 + 9012 괄호

hongssup_ 2023. 3. 8. 17:33
반응형

스택 Silver 4

백준 10773 제로 

K개의 줄에 정수가 하나씩 주어질 때마다, 해당 정수를 push 해주고 0일 경우 pop 해주면 되는 간단한 문제. 

정수가 "0"일 경우에 지울 수 있는 수가 있음을 보장할 수 있다. 라고 되어 있어 딱히 옵셔널 처리도 안해줘도 됨. 

let k = Int(readLine()!)!
var stack: [Int] = []

for _ in 0..<k {
    let input = Int(readLine()!)!
    if input == 0 {
        stack.removeLast()
    } else {
        stack.append(input)
    }
}

print(stack.reduce(0, +))

 

백준 9012 괄호

괄호들이 유효한 쌍들로 이루어져 있는지 확인하는 문제. 

"(" 가 들어오면 push

")"가 들어오면 앞에 "(" 가 있는지 확인하고 pop 해주면 됨. 

let T = Int(readLine()!)!

for _ in 0..<T {
    let input = readLine()!
    print(isValidParenthesisString(input))
}

func isValidParenthesisString(_ input: String) -> String {
    var stack: [Character] = []

    for i in input {
        if i == "(" {
            stack.append(i)
        } else {
            if stack.last == "(" {
                stack.removeLast()
            } else {
                return "NO"
            }
        }
    }
    return stack.isEmpty ? "YES" : "NO"
}

 

728x90
반응형