티스토리 뷰
더보기
import java.util.*;
class Solution {
// 문제 :
// + 괄호가 올바르게 닫혔는지 확인하여,
// + 올바른 괄효면 true를 그렇지 않으면 false를 반환해라.
// + 이러한 문제는 stack의 자료구조를 활용하면 보다 쉽게 해결할 수 있다.
boolean solution(String s) {
boolean answer = true;
// + 올바른 괄호인지를 저장하는 변수 생성
// + 1. 올바른 괄호이기 위해서는
// + 마지막 괄호가 반드시 닫히는 괄호이어야 하며,
// + 닫힌 괄호와 열린 괄호의 수가 같아야 하기 때문에 변수를 생성하여 파악하도록 한다.
int close = 1;
// + 닫힌 괄호를 카운트해주는 변수를 생성하고 1을 기본값으로 주어
// + 열린 괄호가 나오면 이에 - 1씩 해주고
// + 닫힌 괄호가 나올 시에는 + 1씩 해준다.
// + 2. 문자열 s를 문자단위로 잘라 stack의 구조에 저장한다.
Stack <Character> st = new Stack<>();
for ( int i = 0; i < s.length(); i++ ){
st.push(s.charAt(i));
} // for
// + 3. stack구조를 활용하여 뒤에서부터 닫힌 괄호와 열린 괄호의 수가 맞는지,
// + 가장 마지막 괄호가 닫힌 괄호가 맞는지 확인한다.
for ( int i = 0; i < s.length(); i++ ){
char temp = st.pop();
if ( ( i == 0 ) && ( temp == '(' ) ){
answer = false;
break;
} // if : 마지막 괄호가 열린괄호일 시에는 더이상 확인할 필요가 없다.
if ( temp == ')' ){
close ++;
} // if : 닫힌 괄호라면
if ( temp == '(' ){
close --;
if ( close <= 0 ) {
answer = false;
break;
} // 열린괄호가 닫힌괄호가 많다면 -> 올바르지 x
} // if : 열힌 괄호라면
} // for
// + 4. 마지막으로 닫힌 괄호의 수와 열린 괄호의 수가 서로 같은지 확인한다.
if ( close != 1 ){
answer = false;
} // if : 괄호의 수가 같으면 close의 값은 최종 1이 된다.
return answer;
} // solution
} // end class
728x90
'코딩 테스트 [ 연습 ]' 카테고리의 다른 글
프로그래머스 - 입문 - 순서쌍의 개수 (0) | 2022.12.22 |
---|---|
프로그래머스 - 입문 - 문자 반복 출력하기 (0) | 2022.12.21 |
프로그래머스 - 입문 - 아이스 아메리카노 (0) | 2022.12.20 |
프로그래머스 - 입문 - 배열 원소의 길이 (0) | 2022.12.19 |
프로그래머스 - 입문 - 편지 (0) | 2022.12.19 |
댓글