코딩테스트/백준

백준 2504번 괄호의 값 해설/풀이/코드 (파이썬) 테스트케이스 추가 요청하기

RyanKwon 2021. 9. 29. 20:00
728x90

코드만 궁금한 분은 링크

 

대충 문제 읽고 간단한 스택문제일 줄 알았는데 결코 그렇지 않았다.

 

((()))[][] 이런식으로 괄호가 입력되면 ()는 2점, []는 3점을 더하고 만약 중복된 괄호가 있을 경우 값을 곱하면 된다.

 

따라서 여기에는, 일반 괄호 문제처럼 (, [인 경우에는 스택에 넣고 ), ] 인 경우에는 스택에서 빼는 것에서 추가해 - 아직 남은 괄호가 있는지에 따라 계산 방식이 달라지는 경우를 추가해야한다.

 

사실 그냥 스택이 뭔지 알면 무조건 스택문제구나- 하고 누구나 알 수 있는 문제이고, 그 이후는 그냥 구현문제라 딱히 쓸 말이 별로 없다. 

 

나도 한시간 반정도 미묘한..조건설정에서 헤매다 아래 블로그의 풀이를 참고해서 다시 풀었다. 코드를 보면 알겠지만 아래와 거의 같은데 다만 나는 (랑 [부분을 따로 나눠서 하지않고 별도의 딕셔너리를 만들어서 2로 계산할지 3으로 계산할지를 결정했다.

 

[BOJ]2504 괄호의 값 - python

https://www.acmicpc.net/problem/2504 이 문제는 stack을 활용하여 풀수있는 문제이다. 지난번 글 처럼 스택을 사용하므로 list를 스택으로 이용한다. 알고리즘을 설명해보면 스택에 괄호를 여는 "(","[" 기호

chocodrogba.tistory.com

 

------추가------

 

다른 분의 코드를 참고해서 풀었던 문제의 경우에는 따로 복기해보는 시간을 갖곤 하는데, 아무리 생각해도 ]()이나 [][]]()같은 경우를 제대로 계산하고있는것같지가 않았다. 문제 조건에 따르면 두 경우는 모두 제대로 된 괄호열이 아니기때문에 0을 반환하는게 맞는데 내가 제출한(답이라고 확인된)코드에 따르면 ]나 )가 맞는 짝을 찾지 못해도 0이 아닌 나머지 계산값들을 출력하고 있었다. 해당 조건에서 0출력할 수 있게 코드 하나 추가하고 재제출했다. 

728x90