알고리즘왕/BOJ
[백준 9012] 괄호 / Kotlin
찌 ㅋ
2021. 11. 22. 15:14


풀이
1. 스택 사용
2-1. '(' 일 경우, 스택에 무조건 넣음
2-2. ')' 일 경우
a. 스택이 비어 있으면 NO, 현재 문자열을 검사하는 반복문에 대해서 break
b. 스택에 괄호가 있으면 pop 후에 이어서 진행
코틀린 공부도 할 겸, 겸사겸사 오랜만에 알고리즘 풀기
자바 경험에 의존해서 작성하니까 코틀린도 자바스럽게 풀어 버림 😊👌
자바였으면 5분도 안 걸렸을 거 코틀린으로 하려니 아리까리 (ㅠㅠ)
코틀린을 좀 더 코틀린스럽게 짜려면 스프링만 할 게 아니라 코틀린도 해야겠다.
(기초만 후다닥 하고 넘어가버리니까 얕은 지식으로 눈 가리고 아웅 하고 있는 듯...ㅠ)
더보기
import java.util.*
import kotlin.collections.ArrayList
fun main() = with(System.`in`.bufferedReader()) {
val n = readLine().toInt()
val strList = ArrayList<String>()
val stack = Stack<Char>()
val result = StringBuilder()
for (i in 0 until n) {
strList.add(readLine())
}
for (str in strList) {
val target = str.toCharArray()
stack.clear()
for (c in target) {
when (c) {
'(' -> stack.add('(')
')' -> if (stack.empty()) {
stack.add('(')
break
} else stack.pop()
}
}
if (stack.empty())
result.append("YES\n")
else
result.append("NO\n")
}
print(result)
}