
class Solution {
boolean solution(String s) {
boolean answer = false;
int cnt1= 0;
int cnt2= 0;
int cnt3= 0;
for(int i= 0; i <s.length();i++) {
if(s.charAt(i) == '(') {
cnt1++;
cnt2++;
} else {
cnt1--;
cnt3++;
if(cnt1 <0) {
return answer ;
}
}
}
if(cnt2 != cnt3) {
return answer;
}
answer = true;
return answer;
}
}
(1) 생각한 경우의 수
import java.util.Stack;
class Solution {
boolean solution(String s) {
boolean answer = true;
String res = "YES";
Stack<Integer> st = new Stack<>();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
st.push(1);
} else if (s.charAt(i) == ')') {
if (st.isEmpty()) {
answer = false;
break;
} else {
st.pop();
}
}
}
if(!st.isEmpty()) {
answer = false;
}
System.out.println(res);
return answer;
}
}
(1) 스택을 이용하여 풀었다.
(2) 스택 객체 st 를 선언하고 만약 '(' 를 만나면 st에 push로 삽입 그렇지 않고 만약 st가 비어있다면 false를 반환 그렇지 않다면 ')' pop 을 통해 꺼낸다
(3) 만약 위 과정을 거쳐 st 객체가 비어있지 않다면 false를 반환
스택에 대해 정리해보자
코딩테스트에 스택이 나올 수 있으니 참고해서 나중에 다시 볼 수 있도록 하자