문제 출처 - Programmers
문제는 여기
[풀이]
1. 여는 괄호의 경우는 무조건 스택에 넣어준다.
2. 닫는 괄호의 경우는 2가지 경우가 발생한다.
2-1. 스택이 비어있는 경우는 매칭이 되지 않기 때문에 바로 false를 리턴한다.
2-2. 여는 괄호가 스택에 있는 경우는 매칭이 되기 때문에 다음 체크를 한다.
3. 1. ~ 2. 를 입력받은 s의 길이만큼 반복한다.
4. 결과를 출력한다.
[접근]
1. 여는 괄호일 때는 스택에 넣고 닫는 괄호와 매칭 시켜서 스택에 있는 괄호를 하나씩 제거하면 되겠다고 생각하였다.
[코드]
import java.util.*;
class Solution {
boolean solution(String s) {
Stack<Character> st = new Stack<>();
boolean answer = true;
for (int i = 0; i < s.length(); i++) {
// '('면 넣기
if (s.charAt(i) == '(')
st.push('(');
// ')'라면
else {
// 스택이 비어있으면 들어오면 안됨
if (st.isEmpty())
return false;
// 비어있지 않으면 '(' 가 있는 상태니까 스택에서 꺼내기
else
st.pop();
}
}
// 스택이 비어있으면 true 아니라면 false
if (st.isEmpty())
answer = true;
else
answer = false;
return answer;
}
}
'문제 풀이 > Programmers' 카테고리의 다른 글
[프로그래머스] 영어 끝말잇기 (JAVA) (0) | 2022.04.22 |
---|---|
[프로그래머스] 숫자의 표현 (JAVA) (0) | 2022.04.21 |
[프로그래머스] x만큼 간격이 있는 n개의 숫자 (0) | 2022.04.18 |
[프로그래머스] 행렬의 덧셈 (JAVA) (0) | 2022.04.17 |
[프로그래머스] 평균 구하기 (JAVA) (0) | 2022.04.15 |