알고리즘/문제 풀이
Programmers - 올바른 괄호
도그rin
2023. 2. 26. 20:52
입력
- 괄호( ’(’와 ‘)’ )로 이루어진 문자열 s ( s의 길이 ≤ 100,000 )
출력
- 문자열 s가 올바른 괄호이면 true를, 올바르지 않은 괄호라면 false를 반환
풀이 방법
- 스택 이용
- 문자가 ‘(’이면 스택에 저장
- 문자가 ‘)’이면
- peek()을 이용하여 스택 상단의 값을 확인했을 때 ‘(’이면 pop()
- 스택 상단의 값이 ‘)’이거나 스택이 비어있다면 false를 반환하고, 반복문 빠져나옴
- 반복문을 모두 끝낸 뒤 스택이 비어있지 않다면 false를 반환
코드
import java.util.Stack;
class Solution {
boolean solution(String s) {
boolean answer = true;
Stack<Character> stack = new Stack<>();
for(int i=0;i<s.length();i++) {
char ch=s.charAt(i);
// '('이면 스택에 저장
if(ch=='(') {
stack.push(ch);
}
// ')'이면
else {
// 스택이 비어있지 않다면
if(!stack.isEmpty()) {
// 스택 상단의 값이 '('이면
if(stack.peek()=='(') {
// 스택에서 괄호 꺼내기
stack.pop();
continue;
}
}
answer=false;
break;
}
}
// 스택이 비어있지 않으면 false 반환
if(!stack.isEmpty()) {
answer=false;
}
return answer;
}
}