[백준] 2504번: 괄호의 값




맨 처음엔 스택에 '(', '['도 넣고 계산한 값도 넣어서
top이 어떤 값이냐에 따라 처리하려고 했는데
char와 int간에 형변환이 너무 복잡하고
string은 더 복잡해서,, 하루종일 고생하다가
다른 방법으로 바꿨다.
(나는 c++형변환에 약한것같다ㅠㅠ)

string으로 입력을 받아 처음부터 순서대로 보는데
'('나 '['면 스택에 push하고 mul에 2나 3을 곱해주고 개수(k나 l)도 증가시켜준다.
만약에 다음꺼가 닫는괄호면 더하기 해준다.

')'나 ']'면 스택에서 pop해주고 mul에 2나 3을 나눠준다.
이때 k나 l이 0보다 큰값이 아니면 앞에서 짝이 안나왔다는 것이므로
0을 출력하고 바로 return해주었다.

마무리로
스택이 비어있지 않고 k나 l이 0이 아니면 올바르지 않은 괄호열을 의미하므로
0을 출력하게 하였다.

공부를 진짜 열심히 해야겠구나 느꼈던 문제였다...

코드↓









댓글

이 블로그의 인기 게시물

[백준] 1850번: 최대공약수

[백준] 1717번: 집합의 표현