알고리즘/BOJ

백준 4889번 안정적인 문자열

꾸준함. 2020. 3. 21. 17:55

문제 링크입니다: https://www.acmicpc.net/problem/4889

 

4889번: 안정적인 문자열

문제 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다. 여기서 안정적인 문자열을 만들기 위한 최소 연산의 수를 구하려고 한다. 안정적인 문자열의 정의란 다음과 같다. 빈 문자열은 안정적이다. S가 안정적이라면, {S}도 안정적인 문자열이다. S와 T가 안정적이라면, ST(두 문자열의 연결)도 안정적이다. {}, {}{}, {{}{}}는 안정적인 문자열이지만, }{, {{}{, {}{는 안정적인 문자열이 아니다. 문자열에 행할 수 있는 연산은 여는

www.acmicpc.net

DP를 이용하여 푼 문제였습니다. (다른 분들의 풀이를 확인해보니 굳이 DP를 쓸 필요 없이 쉽게 생각하면 되는 문제였습니다.)

 

알고리즘은 아래와 같습니다.

i) 짝이 지어지지 않은 왼쪽 괄호가 주어진 문자열 길이의 반 미만일 경우 idx 번째 문자를 왼쪽 괄호로 만들어줌으로써 하나 늘렸습니다.

ii) 짝이 지어지지 않은 왼쪽 괄호가 하나 이상 있을 경우 idx 번째 문자를 오른쪽 괄호로 만들어줌으로써 안정적으로 만들어줬습니다.

iii) 문자열의 마지막 문자가 확인했을 때 짝이 지어지지 않은 왼쪽 괄호의 수가 0이면 안정적인 문자열이고 0이 아니라면 불안정적인 문자열로 판단했습니다.

 

개발환경:Visual Studio 2017

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

 

반응형

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

백준 3053번 택시 기하학  (0) 2020.03.21
백준 17362번 수학은 체육과목 입니다 2  (0) 2020.03.21
백준 11068번 회문인 수  (0) 2020.03.14
백준 2525번 오븐 시계  (0) 2020.03.13
백준 18258번 큐 2  (0) 2020.03.11