2024-11-19 일간회고
2일 전
#일간회고
어제는 백준 문제를 위주로 풀었습니다.
괄호 유형의 스택 문제
작성 이유: 엣지 케이스에서 실수가 많았습니다.
알고리즘 문제를 풀 때 괄호와 관련된 문제들을 풀 때 스택을 사용하는 방법은 많이 알려져 있습니다.
그런데 저는 괄호 및 스택 관련 문제들을 풀 떄마다 엣지 케이스가 있으면 잔실수가 많이 나와서, 정확하게 푸는 요령을 정리하게 되었습니다.
나만의 요령: 트리도 같이 연관지어 생각하기 #스택 #트리 #DFS
괄호 문제가 나올 때 스택을 사용하는 것은 잘 알려져 있습니다.
여기서 한 발 더 나아가, 괄호 텍스트를 가지고 대응되는 트리 구조를 직관적으로 유추할 수 있습니다.
예를 들어
(())()
의 경우,root -> a -> b; root -> c
의 트리 구조와 대응됩니다.
여기서 괄호 문자열을 순회하는 것은 이 트리 구조를 DFS 탐색하는 것에 비유해볼 수 있습니다.
예를 들어
(())()
의 각 문자열을 순회하는 것은 트리 구조를 다음과 같이 탐색하는 것과 대응됩니다.(
-root -> a
(
-a -> b
)
-b -> a
)
-a -> root
(
-root -> c
)
-c -> root
저는 개인적으로 엣지 케이스가 있는 등 문제가 복잡한 경우 다음과 같이 문제를 쪼개는 것이 도움이 되었습니다.
트리를 순회하면서 문제를 해결하는 알고리즘을 구상한다.
구상한 알고리즘을 괄호 순회로 옮긴다.
혹시 괄호 문제 말고도 일반적인 스택 유형 문제에 적용이 되는지 한 번 알아보아야겠습니다.
댓글을 작성해보세요.