320x100
문제 : programmers.co.kr/learn/courses/30/lessons/76502
문자열 길이는 1,000으로 그다지 길지않다.
가능한 모든 문자열을 구해서 각 문자열들이 올바른 괄호문자열인지 판단 후 올바른 괄호문자열의 수를 센다.
올바른 괄호문자열은 문자열을 앞에서부터 탐색하면서 열린괄호라면 스택에 넣는다.
만약 닫는 문자열이 나왔다면 stack이 비어있지 않고 stack의 top에 있는 괄호와 올바른짝이라면 올바른 괄호짝이므로 stack을 pop해주고 다음 문자를 탐색해나간다. 만약 닫는 문자열이 나왔는데 stack이 비어있거나 (ex, ] ) 올바른 괄호짝이 아니라면 (ex, ((] ) 올바른 괄호문자열이 될 수 없다.
모든 문자열을 탐색했을 때 스택이 비어있다면 올바른 괄호 문자열이다. 만약 탐색이 끝났어도 스택이 비어있지 않다면 짝을 가지지 못하는 열린 괄호가 남아있다는 이야기이므로 올바르지 않은 괄호 문자열이다.
시간복잡도는 문자열 길이가 N이라면 O(N^2).
320x100
'알고리즘 문제 > Programmerse' 카테고리의 다른 글
[programmers][월간 코드 챌린지 시즌2] 약수의 개수와 덧셈 (0) | 2021.05.15 |
---|---|
[programmers][월간 코드 챌린지 시즌2] 모두 0으로 만들기 (0) | 2021.04.17 |
[programmers][월간 코드 챌린지 시즌2] 음양 더하기 (0) | 2021.04.17 |
[programmers][2021카카오공채] 광고 삽입 (0) | 2021.03.24 |
[programmers][2021카카오공채] 순위 검색 (0) | 2021.03.06 |
댓글