[백준] 9012번 괄호 - PYTHON

Flash·2022년 3월 2일
0

프로그래밍 문제

목록 보기
21/33

[백준] 9012번

괄호

PYTHON

스택을 이용해서 올바른 괄호를 찾는 문제이다.

여기서 올바른 괄호란 ( ) 의 짝이 맞는 괄호이다.
)( 은 올바르지 않은 괄호이다.

스택에 '(' 괄호가 나올 때마다 삽입하고 ')'가 나오면 삭제하는 방식으로 풀 수 도 있고

파이썬의 replace 함수를 이용하여 문제를 해결할 수 도 있다.


Replace를 이용한 방법


( ) 모양의 괄호를 "" 으로 대체한다.

예를 들어, (( )) 의 형태에서 replace를 한 번 호출하면
( )모양이 된다. 여기서 replace를 한 번 더 호출하면 문자열이 최종적으로 ""이 된다.

코드를 살펴보면 flag를 이용하여 replace 함수를 처음 적용하는지 아닌지를 먼저 이용한다. 처음이 아닌 경우에 s를 tmp로 다시 초기화하고 만약 tmp==s가 되면 종료한다.

즉, replace가 문자열에 아무런 영향을 미치지 못하는 경우이다.

올바른 괄호인 경우에는 종료 시에 s에는 아무것도 들어있지 않을 것이다.


Stack을 이용한 방법

직접 리스트에 값을 삽입하는 것 대신에 a라는 변수에 1을 더하고 빼는 것으로 스택을 구현했다.

올바른 괄호라면 끝났을 때, a의 값이 0일 것이다. 하지만 )( 모양도 0을 만들기 때문에 그걸 방지하기 위해서 ( 가 들어왔을 때, a 값이 음수가 되면 반복문을 종료하도록 한다.

profile
Whiplash We Flash

0개의 댓글