https://school.programmers.co.kr/learn/courses/30/lessons/12909

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

스택 연습문제로 되어있지만 사실 스택 없이도 풀 수 있는 문제입니다.

잘 생각해 보면 올바른 괄호는 '여는 괄호와 닫는 괄호의 수가 같고' 여는 괄호보다 닫는 괄호가 많이 나오지 않는 형태입니다. 닫는 괄호가 많아진다면 반드시 잘못된 형태지만 여는 괄호가 많은 경우는 이후에 나오는 닫는 괄호와 짝을 이루어 올바른 형태가 될 수 있기 때문이죠.

 

따라서 입력을 한 번 순회하면서 여는 괄호보다 닫는 괄호가 많아지는지, 입력을 다 순회하고 나서 열고 닫는 괄호 짝이 전부 만들어졌는지를 체크하면 됩니다. 

두 경우 모두 만족하지 못하는 순간 False를 return 하면 됩니다.

 

	class Solution {
	    boolean solution(String s) {
	        boolean answer = true;
	        
	        char[] cArr = s.toCharArray();
	        int count = 0;
	        
	        
	        for(int i = 0; i < cArr.length; i++){
	            if(cArr[i] == '(') {
	            	count += 1;
	            }else {
	            	count -= 1;
	            }
	            
	            if(count < 0) {
	            	answer = false;
	            	break;
	            }
	        }
	        
	        if(count != 0) {
	        	answer = false;
	        }

	        return answer;
	    }
	}
728x90

+ Recent posts