< 문제 정보 >
[ 문제 ]
'(' 문자가 열려있으면, 짝지어 ')'가 올바르게 닫혀있어야 괄호가 바르게 짝지었다라고 할 때, 사용자로부터 오직 '(', ')'로 이뤄진 문자열을 받아 해당 문자열이 바르게 짝지어있다면 true를, 아니라면 false를 반환하자
[ 예시 ]
(1) "()()" 또는 "(())()" 는 올바른 괄호입니다.
(2) ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.[ 규칙 ]
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
[ 프로그래머스 ]
- Level 2 / Java
- 출처 : 프로그래머스 - https://programmers.co.kr/learn/courses/30/lessons/12909
< 풀이 >
- 열린 괄호이면 횟수를 증가시키고, 닫힌 괄호이면 횟수를 감소시킨다.
- 만약 횟수가 0보다 작아진다면, 올바르지 않는 문자열이다.
- 올바른 괄호이라면, 연산 중 닫힌 괄호의 갯수가 열린 괄호의 갯수보다 많을 수 없다.
Ex) 횟수가 0보다 작은 문자열의 경우 : "())" // 횟수가 -1이 된다.
- 최종 계산 값이 0이라면 올바른 문자열, 그렇지 않다면 올바르지 않는 문자열이다.
- 올바른 괄호는 열린 괄호의 갯수와 닫힌 괄호의 갯수가 같다.
<코드>
boolean solution(String s) { boolean answer = true; int count=0; // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다. System.out.println("Hello Java"); for(int i=0;i<s.length();i++){ if (s.charAt(i)=='(') count++; else if (s.charAt(i)==')') count--; if (count < 0) return false; } if (count > 0) answer = false; if (count == 0) answer = true; return answer; } }