알고리즘왕/BOJ

[백준 9012] 괄호 / Kotlin

찌 ㅋ 2021. 11. 22. 15:14

 
분류
번호
알고리즘
난이도
BOJ
9012
Stack, 문자열
실버 4
 

 

 

풀이

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)
}