🔗 문제 링크
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📝 문제 설명
- 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
- '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
⚠️ 제한 사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
✨ 내 코드
import java.util.Stack;
class Solution {
boolean solution(String s) {
// 스택 생성
Stack<Integer> stack = new Stack<>();
// 문자 기준으로 반복문 진행
for (int i = 0; i < s.length(); i++) {
if(s.charAt(i) == '(') { // '('이면 push
stack.push(1);
// ')'이면서 기존 스택이 비어있지 않으면 pop
} else if((s.charAt(i) == ')') && (!stack.isEmpty())) {
stack.pop();
// ')'인데 기존 스택이 비었을 경우 false
} else if ((s.charAt(i) == ')') && (stack.isEmpty())) {
return false;
}
}
// 문자열을 다 돌았는데 stack이 비어있지 않으면 false
if(!stack.isEmpty()) {
return false;
}
return true;
}
}
💡 풀이
- 반복문을 돌면서 이 순서의 문자가 여는 괄호면 push한다.
- 닫는 괄호이면서 스택이 비어있지 않으면 pop한다.
- 닫는 괄호인데 스택이 비어있다면 false를 반환한다.
- 문자열을 다 돌았는데도 스택이 비어있지 않다면 false를 반환한다.
- 그 외의 경우는 true를 반환한다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
| [Java] Lv1. 카드 뭉치 (0) | 2025.06.07 |
|---|---|
| [Java] Lv.2 다리를 지나는 트럭 (0) | 2025.06.07 |
| [Java] Lv2. 짝지어 제거하기 (0) | 2025.06.01 |
| [Java] Lv2. 주식가격 (0) | 2025.06.01 |
| [Java] Lv1. 크레인 인형뽑기 (0) | 2025.06.01 |