https://school.programmers.co.kr/learn/courses/30/lessons/12909
풀이
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
Queue<Character> q = new LinkedList<>();
for(int i = 0; i < s.length(); i++){
if(s.charAt(i) == '('){
q.add('(');
}else{
if(q.isEmpty()){
answer = false;
break;
}
char temp = q.poll();
if(temp == ')'){
answer = false;
break;
}
}
}
if(!q.isEmpty()){
answer = false;
}
return answer;
}
}
순서대로 입력을 처리하기 위해 큐를 만든다.
이후 문자를 하나씩 분리해서 (이면 넣어주고 )이면 빼는 작업을 한다.
1. )이 들어왔는데 큐가 비어있다면 옳지 않은 접근이다 -> false 반환 후 반복 종료
2. )이 들어왔는데 큐에서 나온 것이 ) 라면 괄호가 올바르지 못한 것이다. )는 쌍이 있어야 하기 때문이다. -> false 반환 후 반복 종료
3. 반복을 모두 종료했는데 큐에 남은 것이 있다면 (라는 소리이다. 즉 옳지 못한 접근이다. -> false 반환 후 반복 종료
'문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 다리를 지나는 트럭(JAVA) (0) | 2024.04.25 |
---|---|
[프로그래머스] 프로세스(JAVA) (0) | 2024.04.25 |
[프로그래머스] 기능개발(JAVA) (0) | 2024.04.24 |
[프로그래머스] 같은 숫자는 싫어(JAVA) (0) | 2024.04.24 |
[프로그래머스] 의상(JAVA) (0) | 2024.04.23 |