안녕하세요? 본 문제는 스택 자료구조를 이용하여 푸는 것을 추천드립니다. 첨부해주신 코드의 논리대로라면, 이런 문자열이 나오면 카운트를 증가시켜야 겠죠:
문자열 탐색 도중 '{{' 을 만나면 카운트 1 증가 문자열 탐색 도중 '}}' 을 만나면 카운트 1 증가 문자열 탐색 도중 '}{' 을 만나면 카운트 2 증가
하지만 이 논리의 경우 아래와 같은 반례가 생기게 됩니다:
입력: {{}} --- 정답: 0 출력: 2
문제의 1번 조건과 2번 조건에 따르면 빈 칸은 안정적인 문자열이고, 빈칸에 괄호를 씌운 것도 안정적인 문자열이므로 '' -> '{}' -> '{{}}' 은 안정적인 문자열입니다. 따라서 정답은 0이어야 합니다.
같은 '{{' 가 쓰였다 할지라도, '{{' 뒤에 어떤 괄호가 오느냐에 따라 안정적인 문자열일수도 있고, 아닐 수도 있기 때문에 스택 자료구조를 이용해 이전에 입력되었던 괄호를 저장해 두면서 문제를 푸는 방식을 추천드립니다. 예를 들어, 반례인 {{}}의 경우 '{' 가 2번 오면서 스택에 '{' 가 두 번 저장되고, 이후 '}' 가 올 때마다 가장 최근에 저장되었던 '{' 가 하나씩 상쇄되는 식으로 문제를 풀면 남은 '{' 는 없게 되므로 모든 괄호가 짝을 이루었음을 짐작할 수 있습니다.
'{{' 뿐만 아니라 '}{', '}}' 도 상황에 따라 안정적인 문자열인지 아닌지가 달라지므로 문제를 푸는 데 있어서 유의하시기 바랍니다.
문제 해결에 도움이 되었으면 좋겠습니다.
khj0426 2년 전
입출력은 맞는데 반례나 코드가 어디가 이상한건지 알려주시면 감사하겠습니다..!!!