반복문을 돌려서 문자열을 바꿔가면서 조건을 상세하게 달아줄 것이다. 예를 들어 현재 인덱스의 원소가 [
가 나오면 stack
에 넣어주고 하나하나 넘어가다가 ]
가 나오면 이전에 넣어놓았던 [
를 빼서 상쇄시켜주면 된다. stack
에 넣는 이유는 [{}]
이런식일때 뒤에 넣었던 {
부터 빼내주기 위함이다. stack
을 오랜만에 사용하기때문에 한번 더 살펴보고 가야겠다.
source : https://genius-dev.tistory.com/entry/Kotlin%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Stack%EA%B3%BC-Queue%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC
아마pop()
과peek()
정도를 사용하게 될 듯 하다.
s
의 배열을 바꿔가며 진행해야하므로 새로운 변수에 저장한다.s
의 길이만큼 반복문을 반복하면서 상세 조건을 달아준다.stack
이 비어있으면 현재의 원소를 push()
한다.[
,{
,(
이러한 열린괄호이면 push()
한다.]
이고 stack
에서 peek()
한 원소가 [
일경우엔 pop()
)stack
이 비어있으면 answer
를 +1한다.answer
의 초기값이 -1이었으므로 리턴할때 +1을 해준다.레고레고
return
에 answer
만 입력하는걸 좋아하는데 문제를 최대한 안건드리기 위해서 +1을 해주었다. stack
을 사용해야겠다는걸 생각하는건 어렵지 않았지만 비어있을때 push()
해주는것이 잘 떠오르지 않았다. 그런데 막상 다 풀고나니 그리 어렵지 않은 문제인 것 같기도 하다....
통과~!~!