백준 9012번 괄호검사
소괄호만을 이용하여 괄호검사를 하기 때문에 비교적 쉬운 문제에 속한다.
1. 문제 조건 분석
먼저 첫 줄에 들어오는 숫자가 만큼 괄호를 반복해서 입력받는다.
입력받은 괄호 문자열이 올바른 괄호의 구성이면 YES, 그렇지 않으면 NO를 출력한다.
2. 변수 선언
num : 첫 줄에서 입력받은 숫자. num 길이 만큼의 배열이 생성
ps 배열 : 입력받은 숫자만큼 괄호를 담을 배열
ps 배열은 다음과 같이 생성된다.
(())()) |
(((()())() |
(()())((())) |
((()()(()))(((())))() |
()()()()(()()())() |
(()((())()( |
ans 배열 : YES 또는 NO를 담을 배열. ps배열을 괄호검사 하여 ps[0]이 올바른 괄호이면 ans[0]에 YES 입력
|
|
|
|
|
|
3. 문제 해결
올바른 괄호가 될 조건은 ' ) '이 제대로 있는지에 달려있다. ' ( '이 아무리 많아도 그에 맞게 ' ) '이 있으면 된다.
ps[0]은 ( ( ) ) ( ) ) 이다. ps[0]은 문자열이기 때문에 charAt을 사용하여 한 문자씩 스택에 넣을 수 있다
이 때 ps[0].charAt[i]가 ' ( ' 일 경우 무조건 스택에 push 한다.
만약 ps[0].charAt[i[가 ' ) '일 경우 pop()를 하여 꺼낸 괄호가 ' ( '이어야 올바른 괄호조건이라고 볼 수 있다.
하지만 pop()의 결과가 ' ) '일 경우 이는 올바른 괄호조건이 아니므로 ans 배열에 NO를 입력하고 break하여 빠져나온다.
4. 소스 코드
'Problem Solving > 백준' 카테고리의 다른 글
[백준 BOJ] 5430_AC (0) | 2019.11.24 |
---|---|
[백준 BOJ] 1707_이분 그래프 (0) | 2019.11.18 |
[백준 BOJ] 1152번_단어의 개수 (0) | 2019.11.18 |
알고리즘 문제풀이(Java) - 백준 1149번 (RGB 거리) (0) | 2019.01.21 |
알고리즘 문제풀이(Java) - 백준 9095번(1, 2, 3 더하기) (0) | 2019.01.17 |