Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Cycle detecting
- Dag
- Eulerian circuit
- backtracking
- BST
- DynamicProgramming
- BOJ
- GCD
- flows
- Segment Tree
- dynamic programming
- CS Academy
- implementation
- scc
- hashing
- Greedy
- graph modeling
- mathematics
- BFSDFS
- 백준
- Euler circuit
- disjoint-set
- Sieve_of_Eratosthenes
- graph
- Eulerian path
- Algospot
- Euler path
- POJ
- bitmask
- Shortest path
Archives
- Today
- Total
그냥 하는 노트와 메모장
BOJ 1023 괄호 문자열 본문
* 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