코딩테스트/프로그래머스
[코딩테스트] Java 올바른 괄호
[dev] hiro
2024. 11. 9. 03:57
제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
Programmers 알고리즘 고득점 Kit입니다.
포인트
유명한 스택 문제입니다. ')'이 있으면 '('가 스택에 존재해야합니다. 또 마지막 스택에는 아무런 원소가 없어야합니다.
소스코드
import java.util.Stack;
class Solution {
boolean solution(String s) {
Stack<Character> bracketValidator = new Stack<>();
int len = s.length();
for (int i = 0; i < len; i++) {
if (s.charAt(i) == ')') {
if (bracketValidator.isEmpty() || bracketValidator.peek() != '(') {
return false;
}
bracketValidator.pop();
} else {
bracketValidator.add('(');
}
}
return bracketValidator.isEmpty() ? true : false;
}
}
코드 설명
- Stack<Character> bracketValidator = new Stack<>();
Character를 원소로 갖는 Stack을 선언합니다. - if (s.charAt(i) == ')') { if (bracketValidator.isEmpty() || bracketValidator.peek() != '(') { return false; } }
- ')'가 되었을 때 Stack에 (이 없거나 empty이면 false를 리턴합니다.
- 이후 Stack의 원소를 pop해줍니다.
- else { bracketValidator.add('('); }
- '(' 값을 만났을 때에는 Stack에 add 해줍니다.
- return bracketValidator.isEmpty() ? true : false;
- Stack의 원소가 없으면 true를 리턴 그렇지 않으면 false를 리턴합니다.