반응형
문제
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
"()()" 또는 "(())()" 는 올바른 괄호입니다.
")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
풀이
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
Stack<Character> stack = new Stack<>();
for(char x : s.toCharArray()) {
if(x == '(') {
stack.push(x);
} else {
if(stack.isEmpty()) {
return false;
} else {
stack.pop();
}
}
}
if(!stack.isEmpty()) {
return false;
}
return answer;
}
}
풀이과정
1. '(' 문자가 여는 괄호면 stack에 괄호를 넣어줍니다.
2. ')' 닫는 괄호가 나왔는데 스택 안이 비어있다면 올바른 괄호가 아닙니다.(스택안에는 여는괄호만 존재하는데 없다면 올바른 괄호가 아닌 것) -> false 반환하고 종료!
3. ')' 괄호가 나왔는데 스택 안에 '(' 여는 괄호가 존재한다면 스택에서 값을 꺼내줍니다.(괄호가 완성되었기 때문에)
4. 모든 과정을 마쳤는데 스택 안이 비어있지않다면 false를 반환합니다.
반응형
'알고리즘 > 프로그래머스 LV2' 카테고리의 다른 글
[프로그래머스] LV2 뉴스 클러스터링 (0) | 2023.08.03 |
---|---|
[프로그래머스] LV2 기능개발 (0) | 2023.08.01 |
[프로그래머스]LV2 점프와 순간이동 (0) | 2023.07.16 |
[프로그래머스]LV2 구명보트 (0) | 2023.07.12 |
[프로그래머스]LV2 짝지어 제거하기 JAVA (0) | 2023.07.10 |