‡ CODING TEST STUDY ‡/º 프로그래머스
[프로그래머스 Lv.2 Java] 스택/큐 | 올바른 괄호
Trudy | 송연
2023. 12. 5. 15:25
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12909
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이해하기
https://xoxoxoxox.tistory.com/35
[백준 9012번 C++] 괄호
9012번: 괄호 (acmicpc.net) 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올
xoxoxoxox.tistory.com
위에서 백준에서 푼 문제와 거의 비슷했다.
1. ( 와 )의 개수가 같아야할 뿐만 아니라,
2. (가 나오기 전에 ) 가 먼저 나온다면 바로 false를 return하게 해준다.
스택을 이용해서 풀었는데, ( 가 나오면 스택에 push를 해줬다.
)가 나오면 (를 pop을 해서 () 쌍이 나오면 삭제되게 했다.
따라서 ( 가 나왔는데, 스택에 비어있다면 2번과 같은 경우이다.
그렇게 for문으로 모든 문자열을 다 돌았을때, stack이 비어있다면 알맞게 모든 쌍이 이루어져 true이고,
stack에 (가 남아있다면, 쌍이 맞지 않으니 false가 된다.
코드
import java.util.*;
class Solution {
boolean solution(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
if(s.charAt(i) == '(') {
stack.push(s.charAt(i));
}
else if(s.charAt(i) == ')') {
if(stack.isEmpty()) return false;
stack.pop();
}
}
if(stack.isEmpty()) return true;
else return false;
}
}
실행 결과