[JAVA] 프로그래머스 : 올바른 괄호

조예빈·2024년 7월 13일
0

Coding Test

목록 보기
55/146
post-custom-banner

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

괄호의 개수를 가지고 판단할 수 있음. 단, 괄호의 순서를 고려해 주어야 함

정답 코드

코드를 입력하세요

스택을 이용해도 풀 수 있음

  1. 문자열 split
  2. '('이면 스택에 넣음
  3. ')'이면 스택에서 pop
    3-1. 이 때 스택이 비어있는 상태였다면 즉시 flase 반환
  4. 모든 문자열을 탐색한 후 스택이 비어있다면 올바른 괄호인 것

정답 코드

import java.util.*;

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        Stack<Integer> stack = new Stack<>();
        String[] arr = s.split("");
        int length = arr.length;
        for(int i=0;i<length;i++){
            if(arr[i].equals("(")){
                stack.push(1);
            }else if(arr[i].equals(")")){
                if(!stack.isEmpty()){ //스택이 비어있지 않다면
                    stack.pop();
                }else{
                    answer = false;
                }
            }
        }
        if(!stack.isEmpty()){
            answer = false;
        }
        return answer;
    }
}

이 코드는 모든 테스트 케이스는 통과했지만 효율성에서는 탈락했다.

그래서 charAt으로 바꾸어 주었다.

import java.util.*;

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        Stack<Integer> stack = new Stack<>();
        for(int i=0;i<s.length();i++){
            if(s.charAt(i) == '('){
                stack.push(1);
            }else{
                if(stack.isEmpty()){
                    answer = false;
                }else{
                    stack.pop();
                }
            }
        }
        if(!stack.isEmpty()){
            answer = false;
        }
        return answer;
    }
}

profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러
post-custom-banner

0개의 댓글