[프로그래머스] 올바른 괄호 (Java)

박신희·2022년 9월 10일
0

[풀이] 프로그래머스

목록 보기
21/33
post-thumbnail

❗ 풀이 과정

  • 도저히 크기가 고정된 배열을 사용할 수 없을 것같아서, Stack 라이브러리 사용
  • String s를 CharAt() 메소드를 통해서 처음부터 하나하나 탐색하기
  • (를 만나면 stack에 push, )를 만나면 stack에서 pop 해주기
  • )를 만났을 때, pop하려고 봤더니 스택이 비어있으면, 그건 괄호 짝이 맞지 않는 것이라고 판단하여 false를 return
  • s를 다 탐색 했는데 stack이 비어있지 않다면 짝이 맞지 않는다고 판단하여 false를 return
  • 모든 걸 다 통과했다면 그것은 true

🤜 풀이 코드

import java.util.*;

class Solution {
    boolean solution(String s) {      
		Stack <Character> stack = new Stack<>();
        char open_    = '(';    char close_   = ')';
        
		for(int i=0;i<s.length();i++) {
			char tmp = s.charAt(i); 
			if(tmp==open_)
			{
				stack.push(tmp);                    // 여는 괄호가 있다면, 스택에 넣어주기 
			}
			else if (tmp==close_) {                 // 닫는 괄호가 있다면, 스택에서 요소 빼주기 
				if(stack.isEmpty()) return false;   // 근데, 스택이 비어있다면, false
				stack.pop();
			}
		}		
		if(!stack.isEmpty()) return false;	//  s를 다 탐색하고도 남은 게 있다면 false
		
        return true;                        // 다 통과했다면 true
    }
}

💁‍ 풀이 review

나도 stack에 집어넣으면서, "요소가 비어있는지"만 체크하면 되겠다 굳이 ( 아니고 다른 걸 집어넣어도 되겠다. 라는 생각을 했었는데, 그냥 생각나는대로 풀었다.
다른사람 풀이를 보니까 그냥 stack 라이브러리를 사용하지 않고 int 변수 하나 선언해줘서 (를 만나면 +1 )를 만나면 -1를 해주는 방식으로 풀었는데, 그 방법이 훨씬 효율적일 것 같다.

profile
log my moments 'u')/

0개의 댓글