ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그래머스 올바른 괄호
    개발/코딩테스트 2024. 9. 13. 16:34

    문제 
    괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어

    "()()" 또는 "(())()" 는 올바른 괄호입니다.
    ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
    '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

     

    제한사항

    • 문자열 s의 길이 : 100,000 이하의 자연수
    • 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.

     

    문제 분석 

    ( 입장에서 ) 올 경우 가능 

    ( 입장에서 ( 가 올 경우 )가 2개 있으면 통과 

    앞이 ( 이고 뒤가 ) 인 경우 ( 삭제 

    앞이 ( 이고 뒤가 ( 인 경우 보류 

    stack의 경우 나중에 들어간 것이 먼저 나가는 구조라 해당 값을 이용 하면 됩니다 

    예를 들어 stack에 ( ( 들어 간 후 ) 값과 비교하여 한쌍이면 두번째 ( 를 제거합니다  그리고 다시 첫번째 ( 와  )를 비교한 후 ( 를 제거하면 

    stack이 비게 되고 그 경우 true를 리턴 하면 됩니다 

     

        import java.util.*;
        
        boolean solution(String s) {
        	Stack<Character> stack = new Stack<>();
            for(int i=0; i < s.length(); i ++){
            	if(stack.isEmpty()){
                	stack.push(s.charAt(i));
                    continue;
               	}
                if(stack.peek()=='(' && s.charAt(i) == ')'){
                	stack.pop();
                }else{
                	stack.push(s.charAt(i));
                }
            }
            return stack.isEmpty();
        }

     

    자료구조 : stack 이용 

    댓글

Designed by Tistory.