그냥 하는 노트와 메모장

BOJ 1023 괄호 문자열 본문

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이 음수가 될 수 있다는 점만 주의해주면 어렵지 않게 구현할 수 있다.



'Solved problems' 카테고리의 다른 글

BOJ 12932 노래방  (0) 2020.06.08
BOJ 12861 죄수에게 주는 뇌물  (0) 2020.06.08
BOJ 17428 K번째 괄호 문자열  (0) 2020.06.04
BOJ 3001 이상한 문제  (0) 2020.06.03
BOJ 16876 재미있는 숫자 게임  (0) 2020.05.28
Comments