๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ”ฎ ์•Œ๊ณ ๋ฆฌ์ฆ˜ Algorithm/โš ๏ธ ๋ฐฑ์ค€ โš ๏ธ

๋ฐฑ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - [์Šคํƒ] ๊ท ํ˜•์žกํžŒ ์„ธ์ƒ ๋ฌธ์ œ/ํ’€์ด

by Meteora_ 2021. 3. 14.
728x90

https://www.acmicpc.net/problem/4949

๋ฌธ์ œ

์„ธ๊ณ„๋Š” ๊ท ํ˜•์ด ์ž˜ ์žกํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค. ์–‘๊ณผ ์Œ, ๋น›๊ณผ ์–ด๋‘  ๊ทธ๋ฆฌ๊ณ  ์™ผ์ชฝ ๊ด„ํ˜ธ์™€ ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ์ฒ˜๋Ÿผ ๋ง์ด๋‹ค.

์ •๋ฏผ์ด์˜ ์ž„๋ฌด๋Š” ์–ด๋–ค ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ด„ํ˜ธ๋“ค์˜ ๊ท ํ˜•์ด ์ž˜ ๋งž์ถฐ์ ธ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์งœ๋Š” ๊ฒƒ์ด๋‹ค.

๋ฌธ์ž์—ด์— ํฌํ•จ๋˜๋Š” ๊ด„ํ˜ธ๋Š” ์†Œ๊ด„ํ˜ธ("()") ์™€ ๋Œ€๊ด„ํ˜ธ("[]")๋กœ 2์ข…๋ฅ˜์ด๊ณ , ๋ฌธ์ž์—ด์ด ๊ท ํ˜•์„ ์ด๋ฃจ๋Š” ์กฐ๊ฑด์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ๋ชจ๋“  ์™ผ์ชฝ ์†Œ๊ด„ํ˜ธ("(")๋Š” ์˜ค๋ฅธ์ชฝ ์†Œ๊ด„ํ˜ธ(")")์™€๋งŒ ์ง์„ ์ด๋ค„์•ผ ํ•œ๋‹ค.
  • ๋ชจ๋“  ์™ผ์ชฝ ๋Œ€๊ด„ํ˜ธ("[")๋Š” ์˜ค๋ฅธ์ชฝ ๋Œ€๊ด„ํ˜ธ("]")์™€๋งŒ ์ง์„ ์ด๋ค„์•ผ ํ•œ๋‹ค.
  • ๋ชจ๋“  ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ๋“ค์€ ์ž์‹ ๊ณผ ์ง์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์™ผ์ชฝ ๊ด„ํ˜ธ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • ๋ชจ๋“  ๊ด„ํ˜ธ๋“ค์˜ ์ง์€ 1:1 ๋งค์นญ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰, ๊ด„ํ˜ธ ํ•˜๋‚˜๊ฐ€ ๋‘˜ ์ด์ƒ์˜ ๊ด„ํ˜ธ์™€ ์ง์ง€์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.
  • ์ง์„ ์ด๋ฃจ๋Š” ๋‘ ๊ด„ํ˜ธ๊ฐ€ ์žˆ์„ ๋•Œ, ๊ทธ ์‚ฌ์ด์— ์žˆ๋Š” ๋ฌธ์ž์—ด๋„ ๊ท ํ˜•์ด ์žกํ˜€์•ผ ํ•œ๋‹ค.

์ •๋ฏผ์ด๋ฅผ ๋„์™€ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ๊ท ํ˜•์žกํžŒ ๋ฌธ์ž์—ด์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ํŒ๋‹จํ•ด๋ณด์ž.

์ž…๋ ฅ

ํ•˜๋‚˜ ๋˜๋Š” ์—ฌ๋Ÿฌ์ค„์— ๊ฑธ์ณ์„œ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ๋ฌธ์ž์—ด์€ ์˜๋ฌธ ์•ŒํŒŒ๋ฒณ, ๊ณต๋ฐฑ, ์†Œ๊ด„ํ˜ธ("( )") ๋Œ€๊ด„ํ˜ธ("[ ]")๋“ฑ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ธธ์ด๋Š” 100๊ธ€์ž๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

์ž…๋ ฅ์˜ ์ข…๋ฃŒ์กฐ๊ฑด์œผ๋กœ ๋งจ ๋งˆ์ง€๋ง‰์— ์  ํ•˜๋‚˜(".")๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.

์ถœ๋ ฅ

๊ฐ ์ค„๋งˆ๋‹ค ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ๊ท ํ˜•์„ ์ด๋ฃจ๊ณ  ์žˆ์œผ๋ฉด "yes"๋ฅผ, ์•„๋‹ˆ๋ฉด "no"๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1 ๋ณต์‚ฌ

So when I die (the [first] I will see in (heaven) is a score list). [ first in ] ( first out ). Half Moon tonight (At least it is better than no Moon at all]. A rope may form )( a trail in a maze. Help( I[m being held prisoner in a fortune cookie factory)]. ([ (([( [ ] ) ( ) (( ))] )) ]). . .

์˜ˆ์ œ ์ถœ๋ ฅ 1 ๋ณต์‚ฌ

yes yes no no no yes yes

ํžŒํŠธ

7๋ฒˆ์งธ์˜ " ."์™€ ๊ฐ™์ด ๊ด„ํ˜ธ๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋Š” ๊ฒฝ์šฐ๋„ ๊ท ํ˜•์žกํžŒ ๋ฌธ์ž์—ด๋กœ ๊ฐ„์ฃผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

ํ’€์ด - > (Java 8.0 ์‚ฌ์šฉ)

 

import java.util.Scanner;
import java.util.Stack;
 
public class Main {
	public static void main(String[] args) {
		
		//์Šค์บ๋„ˆ ์ƒ์„ฑ (ํ•ด๋‹น ๋ฌธ์žฅ์„ ๋ฐ›๋Š” ์—ญํ• )
		Scanner in = new Scanner(System.in);
		
		//์ž…๋ ฅํ•  ๋ฌธ์žฅ ๋ณ€์ˆ˜ -> s
		String s;
		
		
		//๋ฌธ์ž์—ด ์ฐพ๋Š” ์žฅ์†Œ (๋ฐ˜๋ณต๋ฌธํ™œ์šฉ)
		while(true) {		
			
			s = in.nextLine(); // ๋ฌธ์žฅ์„ ๋ฐ›์•„์„œ s์— ๋„ฃ๋Š”๋‹ค
				
			if(s.equals(".")) {	// ๋ฌธ์žฅ ์Šค์บ”ํ•˜๋‹ค๊ฐ€ (.)์„ ์ฐพ์•˜์œผ๋ฉด ํƒˆ์ถœํ•ด
				break;
			}		
			System.out.println(solve(s));  // solve๋ฅผ ์‹คํ–‰ !
		}
	
	}
	
	public static String solve(String s) {    // s๋ณ€์ˆ˜ (๋ฌธ์žฅ)์„ ๋ฐ›์•„
		
		Stack<Character> stack = new Stack<>(); // ์Šคํƒ ์ƒ์„ฑ
		
		for(int i = 0; i < s.length(); i++) { //s(๋ฌธ์ž์—ด)์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณตํ• ๊ฑฐ์•ผ
			
			char c = s.charAt(i);	  //i๋ฒˆ์งธ ๋ฌธ์ž์˜ ๋ณ€์ˆ˜๋Š” c์— ๋‹ด์„๊ฑฐ๋‹ค.
			
			// ์—ฌ๋Š” ๊ด„ํ˜ธ์ผ ๊ฒฝ์šฐ ์Šคํƒ์— push 
			if(c == '(' || c == '[') {
				stack.push(c);
			}
			
			// ๋‹ซ๋Š” ์†Œ๊ด„ํ˜ธ ์ผ ๊ฒฝ์šฐ 
			else if(c == ')') {
				
				// ์Šคํƒ์ด ๋น„์–ด์žˆ๊ฑฐ๋‚˜ popํ•  ์›์†Œ๊ฐ€ ์†Œ๊ด„ํ˜ธ๋ž‘ ๋งค์นญ์ด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ 
				if(stack.empty() || stack.peek() != '(') {
					return "no";
				}
				else {
					stack.pop();
				}
			}
			
			else if(c == ']') {
				
				// ์Šคํƒ์ด ๋น„์–ด์žˆ๊ฑฐ๋‚˜          popํ•  ์›์†Œ๊ฐ€ ๋Œ€๊ด„ํ˜ธ๋ž‘ ๋งค์นญ์ด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ 
				if(stack.empty() || stack.peek() != '[') {
					return "no";
				}
				else {
					stack.pop();
				}
			}
			
			// 
		}
		
		if(stack.empty()) {
			return "yes";
		}
		else {
			return "no";
		}
	}
 
}

 

 

 

 

 

 

 

๋Œ“๊ธ€