프로그래머스 쇠막대기

문제를 보고 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
}

코멘트

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.