https://school.programmers.co.kr/learn/courses/30/lessons/12909
이 문제는 스택을 사용하여
")" 문자가 나오면 "(" 문자를 스택에서 꺼내는 방식으로 접근한다.
그림을 그려보면 이해가 쉽다.
문자를 다 꺼낸 후에도 스택에 남아있다면 짝이 맞지 않는 문자열만 남았으므로 false가 된다.
추가로 아래 두 가지 경우도 false가 된다.
1.")"를 꺼냈는데 스택이 비어 있는 경우
2. ")"를 꺼낸 후 다음 문자열이 "("이 아닌 경우
위 내용을 토대로 구현한 코드는 아래와 같다.
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
Stack<String> stack = new Stack<>();
for(int i = 0; i < s.length(); i++) {
stack.push(s.substring(i, i+1));
if(stack.peek().equals(")")){
stack.pop();
if(stack.isEmpty()){
return false;
}
if(!stack.pop().equals("(")){
return false;
}
}
}
if(!stack.isEmpty()) return false;
return answer;
}
}
'Algorithm' 카테고리의 다른 글
[Algorithm] 프로그래머스_네트워크(JAVA) (0) | 2024.12.11 |
---|---|
[Algorithm] 프로그래머스_K번째수(JAVA) (2) | 2024.12.11 |
[Algorithm] 프로그래머스_타겟넘버(JAVA) (3) | 2024.12.10 |
[Algorithm] 프로그래머스_특이한 정렬(JAVA), 우선순위 큐, Comparator (6) | 2024.12.05 |
[Algorithm] 프로그래머스_겹치는 선분의 길이(Java) (0) | 2024.12.05 |