
[LeetCode] Minimum Add to Make Parentheses Valid

완성형 괄호를 만들기 위해 추가해야 하는 괄호의 최소 갯수를 구하는 문제
answer에 저장해 반환한다.s의 각 문자를 탐색한다.()라면, 스택에 추가한다.))를 만난 경우pop() 실행answer 증가answer에 추가한다.class Solution {
public int minAddToMakeValid(String s) {
int answer = 0;
Stack<Character> st = new Stack<>();
for(char c : s.toCharArray()) {
if(c == '(') {
st.add('(');
} else {
if(st.isEmpty()) {
answer++;
} else {
st.pop();
}
}
}
answer += st.size();
return answer;
}
}
스택을 사용하지 않아 메모리 효율을 높일 수 있다.
cnt를 증가시키고, pop() 대신 cnt를 감소시킨다. class Solution {
public int minAddToMakeValid(String s) {
int cnt = 0;
int answer = 0;
for(char c : s.toCharArray()) {
if(c == '(') {
cnt++;
} else {
if(cnt > 0) {
cnt--;
} else {
answer++;
}
}
}
answer += cnt;
return answer;
}
}