본문 바로가기

Code/algorithm with go

9012

9012

www.acmicpc.net/problem/9012

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

코드

package main

import (
	"fmt"
	"bufio"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	// writer := bufio.NewWriter(os.Stdout)

	var t int
	var s string
	fmt.Fscanf(reader, "%d\n", &t)


	for {
		fmt.Fscanf(reader, "%s\n", &s)
		check(s)

		t = t -1
		if t == 0 {
			return
		}
	}
}

func check(s string) {
	var stack []string
	for _, char := range s {
		if string(char) == "(" {
			stack = append(stack, string(char))
		} else if string(char) == ")" && len(stack) != 0{
			if stack[len(stack) - 1] == "(" {
				stack = stack[0:len(stack) - 1]
			}
		} else if string(char) == ")" && len(stack) == 0{
			fmt.Println("NO")
			return
		}
	}

	if len(stack) != 0 {
		fmt.Println("NO")
	} else {
		fmt.Println("YES")
	}

}

 

잘 풀다가 이게 YES 인지 판단부분 이 헷갈렸다 

() 여도 리스트는 비어있고

()) 여도 리스트가 비어있기 때문이다.

 

다음부터 작성하기 전에 어떤 조건(예) 들을 최소한으로 만족시켜야하는지 한번 적어보고 해봐야겠다.