[문제 설명]
더보기

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예

입출력 예 설명
입출력 예 #1,2,3,4
문제의 예시와 같습니다.
[간단 설명]
'(', ')' 괄호의 열림 닫힘이 올바른 형태인지 true, false로 반환
[접근 방법]
- 스택/큐를 사용하기 위해 ArrayDeque 객체 생성 (ArrayDeque는 스택과 큐 모두를 효율적으로 지원하는 객체)
- for문을 활용해 괄호를 순차적으로 Deque의 끝에 저장
- Deque의 첫 번째가 ')' 닫힌 괄호인 경우 올바른 형태가 아니므로 false 반환
- 저장된 괄호가 ')' 닫힌 괄호인 경우 Deque의 첫 번째인 '(' 열린 괄호와 마지막에 저장된 ')' 닫힌 괄호를 제거
- 2~4번을 반복하며 문자열 끝까지 처리
- 올바른 괄호 형태인 경우 Deque는 비어 있어야 함
- Deque의 isEmpty()를 활용해 비어 있으면 true, 아니면 false 반환
[소스 코드]
import java.util.*;
class Solution {
boolean solution(String s) {
ArrayDeque<Character> que = new ArrayDeque<>();
for(int i = 0 ; i < s.length() ; i++){
que.addLast(s.charAt(i));
if(que.peekFirst() == ')') return false;
if(que.peekLast() ==')') {
que.pollFirst();
que.pollLast();
}
}
return que.isEmpty() ? true : false;
}
}
[실행 결과]


'프로그래머스' 카테고리의 다른 글
| [프로그래머스/JAVA]코딩테스트 연습 > 연습문제 > 숫자의 표현 (0) | 2025.03.21 |
|---|---|
| [프로그래머스/JAVA]코딩테스트 연습 > 월간 코드 챌린지 시즌1 > 이진 변환 반복하기 (0) | 2025.03.21 |
| [프로그래머스/JAVA]코딩테스트 연습 > 연습문제 > JadenCase 문자열 만들기 (0) | 2025.03.20 |
| [프로그래머스/JAVA]코딩테스트 연습 > 연습문제 > 최솟값 만들기 (0) | 2025.03.20 |
| [프로그래머스/JAVA]코딩테스트 연습 > 연습문제 > 최댓값과 최솟값 (0) | 2025.03.19 |