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

[๋ฐฑ์ค€] 3986๋ฒˆ: ์ข‹์€ ๋‹จ์–ด(๋ฌธ์ž์—ด, ์Šคํƒ)

by ์ฃผ๋ฐœ2 2020. 2. 9.
๋ฐ˜์‘ํ˜•

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

 

3986๋ฒˆ: ์ข‹์€ ๋‹จ์–ด

๋ฌธ์ œ ์ด๋ฒˆ ๊ณ„์ ˆํ•™๊ธฐ์— ์‹ฌ๋ฆฌํ•™ ๊ฐœ๋ก ์„ ์ˆ˜๊ฐ• ์ค‘์ธ ํ‰์„์ด๋Š” ์˜ค๋Š˜ ์ž์ •๊นŒ์ง€ ๋ณด๊ณ ์„œ๋ฅผ ์ œ์ถœํ•ด์•ผ ํ•œ๋‹ค. ๋ณด๊ณ ์„œ ์ž‘์„ฑ์ด ๋„ˆ๋ฌด ์ง€๋ฃจํ–ˆ๋˜ ํ‰์„์ด๋Š” ๋…ธํŠธ๋ถ์— ์—Ž๋“œ๋ ค์„œ ๊พธ๋ฒ…๊พธ๋ฒ… ์กธ๋‹ค๊ฐ€ ์ œ์ถœ ๋งˆ๊ฐ 1์‹œ๊ฐ„ ์ „์— ๊นจ๊ณ  ๋ง์•˜๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ ์ž๋Š” ๋™์•ˆ ํ‚ค๋ณด๋“œ๊ฐ€ ์ž˜๋ชป ๋ˆŒ๋ ค์„œ ๋ณด๊ณ ์„œ์˜ ๋ชจ๋“  ๊ธ€์ž๊ฐ€ A์™€ B๋กœ ๋ฐ”๋€Œ์–ด ๋ฒ„๋ ธ๋‹ค! ๊ทธ๋ž˜์„œ ํ‰์„์ด๋Š” ๋ณด๊ณ ์„œ ์ž‘์„ฑ์„ ๋•Œ๋ ค์น˜์šฐ๊ณ  ๋ณด๊ณ ์„œ์—์„œ '์ข‹์€ ๋‹จ์–ด'๋‚˜ ์„ธ๋ณด๊ธฐ๋กœ ๋งˆ์Œ ๋จน์—ˆ๋‹ค. ํ‰์„์ด๋Š” ๋‹จ์–ด ์œ„๋กœ ์•„์น˜ํ˜• ๊ณก์„ ์„ ๊ทธ์–ด ๊ฐ™์€ ๊ธ€์ž๋ผ๋ฆฌ(A๋Š” A๋ผ๋ฆฌ, B๋Š”

www.acmicpc.net

 

์ฝ”๋“œ

import java.util.Scanner;
import java.util.Stack;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();
		Stack<Character> stack = new Stack<Character>();
		int goodWords = 0;

		for(int i=0; i<N; i++) {
			String str = scan.next();
			for(int j=0; j<str.length(); j++) {
				if(!stack.isEmpty() && str.charAt(j) == stack.peek()) 
					stack.pop();	// ํ˜„์žฌ ๋ฌธ์ž์˜ ๊ฐ’๊ณผ stack์˜ top ๊ฐ’์ด ๊ฐ™์„๊ฒฝ์šฐ => ์ง์„์ด๋ฃจ์–ด ์ œ๊ฑฐ
				else 
					stack.push(str.charAt(j));	// ๋‘ ๋ฌธ์ž๊ฐ€ ๋‹ค๋ฅผ๊ฒฝ์šฐ => ์Šคํƒ์— ์Œ“๊ธฐ.
			}
			// ๋ชจ๋“  A, B๊ฐ€ ์ง์ด ๋งž์„๊ฒฝ์šฐ -> ์ข‹์€๋‹จ์–ด
			if(stack.size() == 0)
				goodWords ++;

			stack.clear();	// ์Šคํƒ ์ดˆ๊ธฐํ™”
		}

		System.out.println(goodWords);
		scan.close();
	}

}

ํ’€์ด

* ์„ ๋ผ๋ฆฌ ๊ต์ฐจํ•˜์ง€ ์•Š๊ณ , ๊ฐ ๊ธ€์ž๋ฅผ ์ •ํ™•ํžˆ ํ•œ ๊ฐœ์˜ ๋‹ค๋ฅธ ์œ„์น˜์— ์žˆ๋Š” ๊ฐ™์€ ๊ธ€์ž์™€ ์ง ์ง€์„์ˆ˜ ์žˆ์œผ๋ฉด '์ข‹์€๋‹จ์–ด'

* A๋Š” A๋ผ๋ฆฌ, B๋Š” B๋ผ๋ฆฌ ์Œ์„ ์ง“๊ธฐ๋กœ ํ•œ๋‹ค.

 

 

์œ„ ๊ทธ๋ฆผ์—์„œ๋Š” ์„ ๋ผ๋ฆฌ ๊ต์ฐจํ•˜๋ฏ€๋กœ ์ข‹์€ ๋‹จ์–ด๊ฐ€ ์•„๋‹ˆ๋‹ค.

 

์Šคํƒ์„ ์ด์šฉํ•ด ํ•ด๊ฒฐํ•œ๋‹ค.

ABAB์—์„œ ํ•˜๋‚˜์˜ ๋ฌธ์ž์”ฉ ๋น„๊ต๋ฅผ ํ•ด๊ฐ€๋ฉฐ, ์Šคํƒ์— push๋‚˜ pop์„ ํ•˜๋Š”๋ฐ,

 

ํ˜„์žฌ์˜ ๋ฌธ์ž ๊ฐ’๊ณผ ์Šคํƒ์˜ top ๊ฐ’์ด ๋™์ผํ•˜๊ณ , ์Šคํƒ์ด ๋น„์–ด์žˆ์ง€ ์•Š์œผ๋ฉด => ์Œ์„ ์ง€์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์Šคํƒ์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.

ํ˜„์žฌ์˜ ๋ฌธ์ž ๊ฐ’๊ณผ ์Šคํƒ์˜ top ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด => ์Œ์„ ์ง€์„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์Šคํƒ์— ์Œ“๋Š”๋‹ค.

 

์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด๊ฐ€๋ฉฐ ์Šคํƒ์ด ๋น„์–ด์žˆ์„ ๊ฒฝ์šฐ => ๋ชจ๋“  A, B๋Š” ์Œ์„ ์ด๋ฃจ๋ฏ€๋กœ ์ข‹์€ ๋‹จ์–ด์ด๊ณ ,

์Šคํƒ์ด ๋น„์–ด์žˆ์ง€ ์•Š์€๊ฒฝ์šฐ๋Š” ๋ชจ๋“  A, B๋Š” ์Œ์„ ์ด๋ฃจ์ง€ ์•Š์œผ๋ฏ€๋กœ ์ข‹์€ ๋‹จ์–ด๊ฐ€ ์•„๋‹ˆ๋‹ค.

๊ทธ ํ›„ ์Šคํƒ์˜ ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€