백준

[BOJ]9012번 괄호

조주똥 2020. 5. 4. 22:44

#문제링크 : https://www.acmicpc.net/problem/9012

VPS일 경우 YES, 아닐경우 NO를 출력하는 문제로 단순하게 '('가 입력되면 valid변수를 ++하고 ')'가 입력되면 valid변수를 --하는 코드를 생각했다. 하지만 ")("와 같은 경우도 VPS로 판단하기에 틀렸다. 코드는 다음과 같다.

1. Code

<2nd try>

VPS는 "("가 먼저 나오고 ")"가 붙기 때문에, 특징을 보면 valid값이 temp[i] 중간에 계산될때, 한번이라도 음수가 된다면 그건 VPS가 아니다. 이 특징을 생각해서 코드를 짰다.

※주의사항

1. VPS의 특징을 잘 보면, valid값이 계산중에 한번이라도 음수가 되어서는 안된다.

2. 조건문을 잘 확인하고 중복되는 결과가 없도록 확인해야 한다.

2. Code

<3rd try>

이번엔 stack을 사용해서 풀어보았다.

※주의사항

1. Stack의 특징이 넣고 빼는 것임을 착안해, (일때 넣고, )일때 빼는 것으로 분별한다.

2. Stack에 넣었던 값이 다음 반복에 남아있을 수 있기에, 다음 반복 전에 초기화를 반드시 해줘야 한다.

3. 함수의 인자로 넘겨줄때 &를 붙여야 함을 잊지말자.

3. Code