프로그래머스_올바른 괄호

LeeYulhee·2023년 9월 5일
0

💻 문제 출처 : 프로그래머스_올바른 괄호

👉 내가 작성한 답


import java.util.*;

class Solution {
    boolean solution(String s) {
        
        Queue<Character> bracketQueue = new LinkedList<>();
        
        if(s.charAt(0) == ')') return false;
        
        for(char c : s.toCharArray()) {
            if(c == '(') {
                bracketQueue.add(c);
            } else {
                bracketQueue.poll();
            }
        }
        
        if(bracketQueue.isEmpty()) return true;

        return false;
    }
}

📌 문제 풀이 설명

  • Character를 값으로 받는 Queue 생성
  • 만약 s의 첫 글자가 ‘)’와 같다면 return false
    • 괄호가 완성될 수 없음
  • 향상된 for문으로 s를 char 배열로 변환해 순회
    • 만약 s의 요소가 ‘(’와 같다면
      • bracketQueue에 s의 요소 추가
    • 그렇지 않다면
      • bracketQueue에 s의 요소 제거
  • for문 종료 후 만약 bracketQueue가 비었다면 return true
  • 위 코드가 끝나면 return false
    • if문에서 안 걸러졌으면 완성 안 된 괄호가 있는 경우



👉 다른 사람이 작성한 답


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;
    }
}

📌 문제 풀이 설명

  • boolean 변수 answer를 선언하고 false로 초기화, int 변수 count를 선언하고 0으로 초기화
  • for문으로 0부터 s의 길이 미만까지 1씩 증가하며 순회
    • 만약 s의 i 인덱스 요소가 ‘(’와 같다면
      • count 1 증가
    • 만약 s의 i 인덱스 요소가 ‘)’와 같다면
      • count 1 감소
    • 만약 count가 0 미만이면
      • break로 for문 종료
        • 첫 괄호가 ‘)’인 경우나 ‘)’가 ‘(’보다 많이 나온 경우에 음수가 되기 때문에 완성되지 않는 괄호가 생김
  • for문 종료 후 만약 count가 0과 같다면
    • answer에 true 대입
  • 위 과정 종료 후 return answer
profile
공부 중인 신입 백엔드 개발자입니다

0개의 댓글