이전에 했던 프로그램에 이어 스택활용 알고리즘을 풀어보겠다.
이전 프로그램 정리 : https://velog.io/@qowl880/Stack
public class StackBracket {
boolean answer(String s){
Stack<Character> stack = new Stack<>();
for(int i =0; i<s.length(); i++) {
char c = s.charAt(i);
if(c=='(') // (입력시 stack 저장
stack.push(c);
else if(stack.empty()) { // 만약 스택이 비어있는 상태에 )입력시 false 출력
return false;
}
else // (있는 상태에서 )입력시 pop
stack.pop();
}
return stack.empty();
}
}
TDD
class bracketTest {
@Test
@DisplayName("괄호가 잘 풀리는지")
void bracket(){
bracket sb = new bracket();
assertFalse(sb.result("()())"));
assertFalse(sb.result(")()()("));
assertTrue(sb.result("()()"));
assertTrue(sb.result("((()()))"));
assertTrue(sb.result("((((((((((()))))))))))"));
assertFalse(sb.result("(()("));
}
}