Software Engineering Note

Mismatched Parenthesis 본문

알고리즘/알고스팟

Mismatched Parenthesis

devmoons 2014. 9. 21. 15:34
문제: FIXPAREN / 구현, 자료구조


잘못 매칭된 괄호를 수정하는 문제. 


괄호마다 우선순위가 있고, 잘못된 매칭인 경우 우선순위가 높은 괄호로 변환해야 한다.


스택에 무조건 쌓기만 하고 나중에 빼면 출력 순서가 보장되지 않으므로 임의로 index를 지정할 수 있는 배열을 출력용으로 사용했다.


해결전략


1. 왼쪽 괄호인 경우 스택에 넣는다. 이때, (입력 문자열에서의 위치, 문자) 가 저장되는 정보단위가 된다.

2. 오른쪽 괄호인 경우 스택에서 왼쪽괄호를 pop한다. 

(문제 조건을 읽어보면 오른쪽 괄호전에는 반드시 왼쪽 괄호가 저장됨을 보장할 수 있다.)

3. 왼쪽, 오른쪽 우선순위를 비교해서 우선순위가 높은 문자로 변환한다. 그리고 출력용 배열에 저장한다.



코드: https://github.com/xgate/algospot/blob/master/DATA_STRUCTURE/FIXPAREN.cpp

'알고리즘 > 알고스팟' 카테고리의 다른 글

최소, 최대 정사각형 찾기 2  (0) 2015.01.03
최소, 최대 정사각형 찾기 1  (0) 2014.12.27
Weekly Calendar  (0) 2014.08.25
째능 교육  (0) 2014.08.23
DARPA Grand Challenge  (0) 2014.08.16