Algorithm

[๋ฐฑ์ค€ 3986] ์ข‹์€ ๋‹จ์–ด

osean 2023. 4. 18. 01:21

๋ฌธ์ œ

 

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

์ด๋ฒˆ ๊ณ„์ ˆํ•™๊ธฐ์— ์‹ฌ๋ฆฌํ•™ ๊ฐœ๋ก ์„ ์ˆ˜๊ฐ• ์ค‘์ธ ํ‰์„์ด๋Š” ์˜ค๋Š˜ ์ž์ •๊นŒ์ง€ ๋ณด๊ณ ์„œ๋ฅผ ์ œ์ถœํ•ด์•ผ ํ•œ๋‹ค. ๋ณด๊ณ ์„œ ์ž‘์„ฑ์ด ๋„ˆ๋ฌด ์ง€๋ฃจํ–ˆ๋˜ ํ‰์„์ด๋Š” ๋…ธํŠธ๋ถ์— ์—Ž๋“œ๋ ค์„œ ๊พธ๋ฒ…๊พธ๋ฒ… ์กธ๋‹ค๊ฐ€ ์ œ์ถœ ๋งˆ๊ฐ 1์‹œ๊ฐ„ ์ „์—

www.acmicpc.net

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

ํ‰์„์ด๋Š” ๋‹จ์–ด ์œ„๋กœ ์•„์น˜ํ˜• ๊ณก์„ ์„ ๊ทธ์–ด ๊ฐ™์€ ๊ธ€์ž๋ผ๋ฆฌ(A๋Š” A๋ผ๋ฆฌ, B๋Š” B๋ผ๋ฆฌ) ์Œ์„ ์ง“๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ๋งŒ์•ฝ ์„ ๋ผ๋ฆฌ ๊ต์ฐจํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๊ฐ ๊ธ€์ž๋ฅผ ์ •ํ™•ํžˆ ํ•œ ๊ฐœ์˜ ๋‹ค๋ฅธ ์œ„์น˜์— ์žˆ๋Š” ๊ฐ™์€ ๊ธ€์ž์™€ ์ง ์ง€์„์ˆ˜ ์žˆ๋‹ค๋ฉด, ๊ทธ ๋‹จ์–ด๋Š” '์ข‹์€ ๋‹จ์–ด'์ด๋‹ค. ํ‰์„์ด๊ฐ€ '์ข‹์€ ๋‹จ์–ด' ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋Š” ๊ฒƒ์„ ๋„์™€์ฃผ์ž.

์ฒซ์งธ ์ค„์— ๋‹จ์–ด์˜ ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 100)
๋‹ค์Œ N๊ฐœ ์ค„์—๋Š” A์™€ B๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด๊ฐ€ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ๋‹จ์–ด์˜ ๊ธธ์ด๋Š” 2์™€ 100,000์‚ฌ์ด์ด๋ฉฐ, ๋ชจ๋“  ๋‹จ์–ด ๊ธธ์ด์˜ ํ•ฉ์€ 1,000,000์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

์ฒซ์งธ ์ค„์— ์ข‹์€ ๋‹จ์–ด์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

ํ’€์ด

 

๊ณต์œ  ์†Œ์Šค ๋ณด๊ธฐ

 

www.acmicpc.net

์•„์ด๋””์–ด

  • Stack ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•œ๋‹ค.
  • Stack ์˜ ์ตœ์ƒ๋‹จ๊ณผ ํ˜„์žฌ push ๋˜์–ด์•ผ ํ•  ๋ฌธ์ž๊ฐ€ ๋™์ผํ•˜๋‹ค๋ฉด Stack ์˜ ์ƒ๋‹จ์˜ ๊ฐ’์„ pop ํ•œ๋‹ค.
  • ์ตœ์ข…์ ์œผ๋กœ Stack ์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ 0 ์ด๋ผ๋ฉด ์ข‹์€ ๋‹จ์–ด, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ข‹์ง€ ์•Š์€ ๋‹จ์–ด์ด๋‹ค.
#include <bits/stdc++.h>

using namespace std;

int main() {
    int n, cnt = 0;
    cin >> n;
    for (int i = 0; i < n; i++) {
        string input = "";
        cin >> input;
        vector<char> v = vector<char>();
        v.push_back(input[0]);
        for (int k = 1; k < input.length(); k++) {
            if (v[v.size() - 1] == input[k]) v.pop_back();
            else v.push_back(input[k]);
        }
        if (v.size() == 0) cnt++;
    }
    cout << cnt;
}