https://leetcode.com/problems/minimum-add-to-make-parentheses-valid(leetcode)
큐/스택
stack의 후입선출 개념을 활용해 문제를 풀었다.
class Solution {
public int minAddToMakeValid(String s) {
if(s.length() ==1) return 1;
Stack<Character> stack = new Stack<>();
for(int i = 0 ; i <s.length(); i++) {
if(stack.isEmpty()) {
stack.push(s.charAt(i));
} else {
if(stack.peek() == '(' && s.charAt(i) == ')') {
stack.pop();
} else {
stack.push(s.charAt(i));
}
}
}
return stack.size() ;
}
}
stack의 마지막 값이 ( 이고 그 다음 값이 ) 이라면 앞의 peek()했던 값을 제거한다.
그렇지 않고 만약 현재 peek() 한 값이 ) 라면 나중에 처리를 위해 남겨둔다.
이렇게 쭉 돌고 나면 stack 에 처리되지 못한 대상만 남게 되는데 이 수만큼 count를 하면 되기에 stack.size() 가 답이 된다.
없음
#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL