문제를 보고 stack을 적용해야 생각해야 상식이다. 그러나 이 문제를 stack을 쓰기위해 만들었다.
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Solution sol = new Solution();
String arrangement = "(())";
sol.solution(arrangement);
System.out.println("여기");
}// void main
} // Main
class Solution {
public int solution(String arrangement) {
Stack<String> stackOfWork = new Stack<>();
String pushChar = "";
int answer = 0;
boolean trigUp = false;
boolean trigDown = false;
// arrangement의 처음을 push.
for (int i = 0; i < arrangement.length(); i++) {
// 현재 넣을 문자 확인
pushChar = String.valueOf(arrangement.charAt(i));
// System.out.println(pushChar);
if (pushChar.equals("(")) {
// 레이저 발사 확인
// 다음턴에 )가 있으면 레이저 동작
stackOfWork.push(pushChar);
trigUp = true;
trigDown = false;
} else if (pushChar.equals(")")) {
stackOfWork.pop();
trigDown = true;
if (trigUp == true && trigDown == true)
answer = answer + stackOfWork.size();
else
answer = answer + 1;
System.out.println(stackOfWork);
System.out.println(answer);
trigUp = false;
}
}
// stackOfWork.push(arrangement.substring(0,1));
// System.out.println(arrangement.substring(0,1));
System.out.println(answer);
return answer;
} // solutions
}