seunghyun Note

[프로그래머스] - 올바른 괄호 with JAVA 본문

코딩테스트/백준

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

승숭슝현 2024. 1. 4. 11:36
728x90
반응형

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

 

프로그래머스

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

programmers.co.kr

문제 풀이

1. 스택으로 문제 풀기

2. push, pop을 하고 empty일 경우 return false(반복문 안에서)

3. 최종적으로 empty가 될 경우 return true

import java.util.*;
class Solution {
    boolean solution(String s) {
        //stack 할당
        Stack<Integer> stack = new Stack<>();
        
        //문자열의 길이에 따른 stack
        for(int i=0;i<s.length();i++){
            //'(' 일때 push
            if(s.charAt(i)=='(') stack.push(i);
            //스택이 비어있는 경우 , 닫는 괄호를 입력 받았으나 pop할 원소가 없음
            else if(stack.empty()) return false;
            //그 외의 경우 stack 원소들을 pop
            else stack.pop();
        }

        
        //모든 것이 완료돼서 empty일 경우
        if(stack.empty())return true;
        else return false;
 
    }
}

다른 풀이

비슷한 방법이지만 스택 library를 사용하지 않고 count를 대신 스택으로 사용하기

class Solution {
    boolean solution(String s) {
        boolean answer = false;
        int count = 0;
        for(int i = 0; i<s.length();i++){
            if(s.charAt(i) == '('){
                count++;
            }
            if(s.charAt(i) == ')'){
                count--;
            }
            if(count < 0){
                break;
            }
        }
        if(count == 0){
            answer = true;
        }

        return answer;
    }
}
728x90
반응형