1 λΆ„ μ†Œμš”

πŸ“ [S4_4949] κ· ν˜•μž‘νžŒ 세상

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

public class Main{
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();

		boolean check = true;
		while (check) {
			String str = br.readLine();

			// μ’…λ£Œ 쑰건
			if (str.equals(".")) {
				check = false;
			} else {
				String res = check(str);
				sb.append(res).append("\n");
			}
		}
		System.out.println(sb);
	}

	// Stack을 μ΄μš©ν•΄ λ¬Έμžκ°€ κ· ν˜•μž‘νžŒ λ¬Έμžμ—΄μΈμ§€ 체크
	static String check(String str) {
		String res = "yes";
		Stack<Character> stack = new Stack<>();
		for (int i = 0; i < str.length(); i++) {
			// μ‹œμž‘λΆ€λΆ„
			if (str.charAt(i) == '[' || str.charAt(i) == '(') {
				stack.add(str.charAt(i));
			}
			// λŒ€κ΄„ν˜Έ λ‹«νž˜
			if (str.charAt(i) == ']') {
				if (stack.size() == 0) {
					res = "no";
					break;
				}
				char pop = stack.pop();
				if (pop != '[') {
					res = "no";
					break;
				}
			}

			// μ†Œκ΄„ν˜Έ λ‹«νž˜
			if (str.charAt(i) == ')') {
				if (stack.size() == 0) {
					res = "no";
					break;
				}
				char pop = stack.pop();
				if (pop != '(') {
					res = "no";
					break;
				}
			}
		}

		// λ§ˆλ¬΄λ¦¬κ°€ μ•ˆλœκ²½μš° no
		if(stack.size()>0) res="no";
		return res;
	}
}

πŸ€” λ‚˜μ˜ 생각

Stack을 μ‚¬μš©ν•˜λŠ” λ¬Έμ œμ΄λ‹€.

  • ’[’ κ³Ό β€˜(β€˜ 이면 stack에 add
  • stack에 아무것도 μ—†λŠ”λ° λ‹«νž 경우 no
  • ’]’ μΌλ•Œ stackμ—μ„œ pop ν•œ 것이 β€˜[’ 이면 톡과, μ•„λ‹ˆλ©΄ no
  • ’)’ μΌλ•Œ stackμ—μ„œ pop ν•œ 것이 β€˜(β€˜ 이면 톡과, μ•„λ‹ˆλ©΄ no
  • λ§ˆμ§€λ§‰μ— stack에 값이 λ‚¨μ•„μžˆμœΌλ©΄ no ( 완성이 μ•ˆλœ 경우 )


빨리 문제λ₯Ό ν’€κ³  μŠ€νƒμ— 아무것도 μ—†λŠ” κ²½μš°μ™€ λ§ˆμ§€λ§‰ 완성이 μ•ˆλœ 경우λ₯Ό λ†“μ³μ„œ μ‹œκ°„μ΄ μ’€ κ±Έλ Έλ‹€.