Solved problems
BOJ 1023 괄호 문자열
coloredrabbit
2020. 6. 4. 14:53
* BOJ 1023 괄호 문자열
[분류 : 다이나믹 프로그래밍]
BOJ 17428 K번째 괄호 문자열을 먼저 푸는 것을 추천합니다. 사실상 거의 같은 문제입니다.
[풀이]
올바른 괄호 문자열의 정의는 '('의 수와 ')'의 수가 같아야하며 왼쪽에서 오른쪽으로 순회할 때 ')'의 수가 '('의 수보다 많아지면 안된다. 반대로 괄호 ㄴㄴ 문자열이 되려면 위 정의 반대로 구성하면 된다. 즉,
1. '('의 수와 ')'의 수가 다르거나
2. 왼쪽에서 오른쪽으로 순회할 때 ')'의 수가 '('보다 많은 경우에 올바르지 않다고 판단해주면 된다.
위를 토대로 함수 프로토타입을 정의하면 아래와 같다.
rec(v, p, r)
v : validation ')'의 수가 '('의 수를 역전했던 적이 있는지 확인하는 플래그 변수
p : 구성해야하는 문자열의 현재 위치
r : '('의 수 - ')'의 수
r이 음수가 될 수 있다는 점만 주의해주면 어렵지 않게 구현할 수 있다.