생각 안하고 있던 테케에서 걸려서 두 번을 틀렸다..
역시 아직도 많이 부족하다. 열심히 해야지
문제는 이렇다.
(){}[] 세가지 종류의 괄호가 있는데 이 괄호들의 입력이 주어진다. (100만이하)
올바른 부분문자열 괄호의 최대 길이를 구하는 것이다.
예를 들어
()() 이면 4
(()) = 4
((() = 2
[[{)](){[]} = 6
일단 괄호라는 말이 보이자마자 스택을 생각했다.
왠만한 올바른 괄호 찾기는 스택으로 충분히 해결 가능하기에 스택을 사용하는데
이 문제에는 올바른 괄호가 얼마나 이어져있나를 생각해야했다.
나는 단순하게 괄호의 시작지점들을 따로 배열에 담아서 저장하고
닫는 괄호가 나왔을때 스택의 끝에 올바른 여는 괄호가 있나 체크한 후
시작지점의 인덱스를 빼는 식으로 해결했다.
물론 다른 방법들도 많을 수 있지만.. 나는 최대한 문제를 풀 때 처음 생각한대로 밀어붙여서... 다른 방법을 고려도 안했버렸다.
역시나 냈을때 틀렸었고 다시 코드를 보니 [[][[] 이런경우에 4로 계산되는 것을 확인했다.
너무 생각 없이 조건문을 만들어서 걸렸었고 앞으로 더 꼼꼼히 문제를 이해해야겠다.
댓글 없음:
댓글 쓰기