๐Ÿ“Œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„ :: ๋ฐฑ์ค€_4949 :: ์Šคํƒ&ํ - ๊ท ํ˜•์žกํžŒ์„ธ์ƒ๐Ÿ‘€

Dev-Oยท2022๋…„ 2์›” 10์ผ
0

CodingTest

๋ชฉ๋ก ๋ณด๊ธฐ
12/18

๋ฌธ์ œ

ํ’€์ด

์ถœ๋ ฅ์˜ ํ˜•ํƒœ๋ผ๋“ ์ง€, .์ฐ์œผ๋ฉด ๋์ด ๋‚œ๋‹ค๋“ ์ง€ ํ•˜๋Š” ๋ถ€๋ถ„์ด ์• ๋งคํ•ด์„œ ํ˜œ๋งธ๋‹ค. ๋กœ์ง์„ ์งœ๋Š” ๊ณผ์ •๊นŒ์ง€๋Š” ์ˆ˜์›”ํ•˜๊ฒŒ ๊ฐ”์ง€๋งŒ, ์ค‘๊ฐ„์— ์กฐ๊ฑด์„ ํ•˜๋‚˜ ๋†“์น˜๋Š” ๋ฐ”๋žŒ์— ์‹œ๊ฐ„์ด ๊ฝค ๊ฑธ๋ ธ๋‹ค.

  1. ๋ฌธ์ž์—ด์„ ํ•˜๋‚˜์”ฉ ๊ฒ€์‚ฌํ•˜๋ฉด์„œ ๊ด„ํ˜ธ๋ฅผ ๋งŒ๋‚ ๋•Œ ๋งˆ๋‹ค ์กฐ๊ฑด์„ ๊ฑธ์–ด์ค˜์•ผ ํ•œ๋‹ค.
  2. ์Šคํƒ์ด ๋น„์–ด์žˆ์„ ๊ฒฝ์šฐ

    2-1. ')', ']'์˜ ๋‹ซํž˜ ๊ด„ํ˜ธ๋ฅผ ๋งŒ๋‚˜๋ฉด ๋ฌด์กฐ๊ฑด break; โžก๏ธ No์ถœ๋ ฅ
    2-2. ์ด์™ธ์—๋Š” ์Šคํƒ์— ๊ด„ํ˜ธ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

  3. ์Šคํƒ์ด ๋น„์–ด์žˆ์ง€ ์•Š์„ ๊ฒฝ์šฐ

    3-1. ์Šคํƒ์˜ ์—ด๋ฆผ ๊ด„ํ˜ธ '(', '[' ์ผ ๊ฒฝ์šฐ

    3-1-1. ๋ฌธ์ž๊ฐ€ ์ง์ด ๋งž๋Š” ๋‹ซํž˜๊ด„ํ˜ธ ์‹œ ์Šคํƒ์—์„œ pop(); ex) ( ), [ ]
    3-1-2. ๋ฌธ์ž๊ฐ€ ์—ด๋ฆผ๊ด„ํ˜ธ ์‹œ ์Šคํƒ์— ๊ด„ํ˜ธ ์ถ”๊ฐ€ ex) ((([[
    3-1-3. ๋ฌธ์ž๊ฐ€ ์ง์ด ๋‹ค๋ฅธ ๋‹ซํž˜๊ด„ํ˜ธ ์‹œ ex) ( ]. [ )

  4. ๊ทธ๋ ‡๊ฒŒ ์ง์ด ๋งž๋Š” ๊ด„ํ˜ธ๋ฅผ ๋‹คํ•˜๋ฉด ์Šคํƒ์— ๊ด„ํ˜ธ๊ฐ€ ์—†์„ ๊ฒƒ.
  5. ์Šคํƒ์ด ๋น„์—ˆ๋‹ค๋ฉด yes์ถœ๋ ฅ ์•„๋‹ˆ๋ฉด no๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.
    ๐Ÿ“Œ ์ค‘์š” : ์—ฌ๋Ÿฌ ๋ฌธ์ž์—ด์„ ๋ฐ›์•„์•ผํ•ด์„œ ๋งค๋ฒˆ stack.clear()๋ฅผ ํ•ด์ค˜์„œ ์Šคํƒ์„ ๋น„์›Œ์ค˜์•ผํ•œ๋‹ค!!
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.Stack;

public class bj4949_balanceWorld {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		Queue<Character> queue = new LinkedList<Character>();
		Stack<Character> stack = new Stack<Character>();
		
		while (true) {
			String str = scan.nextLine();
			if (str.equals(".")) break;
			for (int i = 0; i < str.length(); i++) {
				char ch = str.charAt(i);
				if(ch=='('|| ch == ')'|| ch=='[' || ch==']') {
					queue.add(ch);
				}
			}
			//(((())
		
			while(!queue.isEmpty()) {//((
				char ch = queue.poll();
				
				//([   ])
				if(stack.isEmpty()) {
					if(ch ==')'||ch==']') {
						stack.push(ch);
						break;
					}else {
						stack.push(ch);
					}
				}else {
					if(stack.peek()=='(') {
						if(ch ==')') {
							stack.pop();
						}else if(ch == '(' || ch =='[') {
							stack.push(ch);
						}else {
							break;
						}
					}else if(stack.peek()=='[') {
						if(ch ==']') {
							stack.pop();
						}else if(ch == '(' || ch =='[') {
							stack.push(ch);
						}else {
							break;
						}
					}
				}
			}
			if(stack.isEmpty())	System.out.println("yes");
			else System.out.println("no");
			stack.clear();
			queue.clear();
			
		}
	}
}
profile
Being Outstanding needs Understanding๐Ÿš€

0๊ฐœ์˜ ๋Œ“๊ธ€