https://www.acmicpc.net/problem/3986
์ฝ๋
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๋ ์์ ์ด๋ฃจ์ง ์์ผ๋ฏ๋ก ์ข์ ๋จ์ด๊ฐ ์๋๋ค.
๊ทธ ํ ์คํ์ ๊ฐ์ ์ด๊ธฐํํ๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 6603๋ฒ: ๋ก๋(dfs, ๋ฐฑํธ๋ํน) (0) | 2020.02.10 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ๋น๋ฐ์ง๋ (0) | 2020.02.09 |
[๋ฐฑ์ค] 2012๋ฒ: ๋ฑ์ ๋งค๊ธฐ๊ธฐ(๊ทธ๋ฆฌ๋) (0) | 2020.02.08 |
[๋ฐฑ์ค] 3040๋ฒ: ๋ฐฑ์ค ๊ณต์ฃผ์ ์ผ๊ณฑ ๋์์ด (0) | 2020.02.07 |
[๋ฐฑ์ค] 2161๋ฒ: ์นด๋1(์๋ฎฌ๋ ์ด์ ) (0) | 2020.02.07 |
๋๊ธ