이 블로그 검색

2018년 6월 19일 화요일

[코드그라운드 Practice] 괄호

17년 SCPC 1차 예선 문제라고한다.
생각 안하고 있던 테케에서 걸려서 두 번을 틀렸다..
역시 아직도 많이 부족하다. 열심히 해야지

문제는 이렇다.
(){}[] 세가지 종류의 괄호가 있는데 이 괄호들의 입력이 주어진다. (100만이하)
올바른 부분문자열 괄호의 최대 길이를 구하는 것이다.
예를 들어
()() 이면 4
(()) = 4
((() = 2
[[{)](){[]} = 6

일단 괄호라는 말이 보이자마자 스택을 생각했다.
왠만한 올바른 괄호 찾기는 스택으로 충분히 해결 가능하기에 스택을 사용하는데
이 문제에는 올바른 괄호가 얼마나 이어져있나를 생각해야했다.

나는 단순하게 괄호의 시작지점들을 따로 배열에 담아서 저장하고
닫는 괄호가 나왔을때 스택의 끝에 올바른 여는 괄호가 있나 체크한 후
시작지점의 인덱스를 빼는 식으로 해결했다.

물론 다른 방법들도 많을 수 있지만.. 나는 최대한 문제를 풀 때 처음 생각한대로 밀어붙여서... 다른 방법을 고려도 안했버렸다.
안좋은 습관인듯

역시나 냈을때 틀렸었고 다시 코드를 보니 [[][[] 이런경우에 4로 계산되는 것을 확인했다.
원래답은2다
너무 생각 없이 조건문을 만들어서 걸렸었고 앞으로 더 꼼꼼히 문제를 이해해야겠다.


댓글 없음:

댓글 쓰기

[백준 16236] 아기 상어

[ 백준 16236 : 아기 상어 ] 2018 삼성전자 sw직무 하반기 기출문제입니다. 역대 삼성전자 기출문제가 그렇듯 역시나 BFS,DFS,완탐,DP,단순구현 입니다. 저는 문제를 단순히 BFS로 풀어갔습니다. 조건만 잘 지킨다면 한번에 ...