본문 바로가기
Language/알고리즘 문제풀이

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

by wakestand 2019. 9. 17.
반응형

사이트명 : 프로그래머스(Programmers)

문제명 : 올바른 괄호

언어 : 자바(Java)

 

괄호가 제대로 열리고 닫혔는지를 체크해서

제대로 열리고 닫혔으면 true, 아니면 false를 반환하는 문제인데

그냥 괄호 갯수가 맞으면 되는게 아니라

 

)( 처럼 괄호가 제대로 닫혔는지 확인을 해야 한다

 

내 풀이방법은 아래와 같은데 

 

먼저 괄호들을 String 타입의 s로 받은 뒤

한글자식 잘라봐서

 

counter에 넣는데

 "("면 counter에 +1 해주고 ")"면 counter에 -1 해주는데

여기서 else를 사용한게

 

어차피 "(" or ")" 만 들어오기 때문에 else if를 사용할 이유가 없다

 

그래서 괄호가 정상적으로 잘 닫혀서 0이라면 true를 반환

제대로 안닫혀서 0이 아니라면 false를 반환한다

 

여기서 괄호가 ")" 로 시작하거나 혹은 "(" 전에 ")" 가 더 많은 경우를 대비해

+ - 해주는 counter가 반복문 돌릴때마다 0보다 작다면

answer에 false를 주고 break 시켜 끝낸다

 

마지막으로 프로그래머스에 바로 적용 가능한 코드는 아래와 같다

 

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        int counter = 0;
        
        for(int i = 0; i<s.length(); i++) {
        	if(s.substring(i, i+1).equals("(")) {
        		counter = counter + 1;
        	} else { // "(" 아님 ")" 밖에 안들어옴
        		counter = counter - 1;
        	}
        	
        	if(counter < 0) {
        		answer = false;
        		break;
        	}
        }
        
        if(counter != 0) {
        	answer = false;
        }

        return answer;
    }
}
반응형

댓글