본문 바로가기
코딩 테스트/[JAVA] programmers 코딩 테스트 연습

[Programmers/JAVA] 올바른 괄호 / 프로그래머스 코딩 테스트 연습

by M개발자 2021. 12. 27.
반응형

올바른 괄호


문제 설명

 

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

  • "()()" 또는 "(())()" 는 올바른 괄호입니다.
  • ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.

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


예시

 

s answer
"()()" true
"(())()" true
")()(" false
"(()(" false

코드 해석 및 전체 코드

 

1. 연 괄호와 닫은 괄호의 개수를 셀 open 변수 선언

2. 문자열 길이만큼 for문 반복

2-1. charAt() 메소드로 문자열 자르기

2-2. 연 괄호 '('일 경우 open++

2-3. 닫은 괄호 ')'일 경우 open--

2-4. open이 -1이 되면 괄호가 안맞는 것이므로 false 반환

3. open이 0이면 개수가 맞으므로 true 반환

4. 0이 아니면 false 반환

 

주의!!

split() 메소드로 문자열을 나눠 배열에 저장할 경우 효율성 테스트에서 통과하지 못한다.

charAt()을 사용해서 시간을 단축시켜야 한다. 

 

class Solution {
    boolean solution(String s) {
        //String[] b = s.split("");
        int open = 0; // 괄호 개수 카운팅할 변수 선언
        
        // 문자열 길이만큼 반복
        for(int i = 0; i < s.length(); i++){
            char b = s.charAt(i); // i번째 문자열 자르기
            
            if(b == '(') open++; // 문자가 ( 일 경우 open++
            else if(b == ')') open--; // 문자가 ) 일 경우 open--
            if(open == -1) return false; // open이 -1 일 경우 괄호가 안 맞는 것이므로 return false
            
        }
        
        // open이 0이면 개수가 맞는 것으로 return true
        if(open == 0) return true;
        else return false;
    }
}

 


github

programmers

 

반응형

댓글