πŸ• Baaaaaarking/0x08κ°• - μŠ€νƒμ˜ ν™œμš© (μˆ˜μ‹μ˜ κ΄„ν˜ΈμŒ)

[BOJ S4][C++] 3986번: 쒋은 단어

선달 2022. 3. 1. 00:52
λ°˜μ‘ν˜•

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

 

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을 λ„˜μ§€ μ•ŠλŠ”λ‹€.

좜λ ₯

첫째 쀄에 쒋은 λ‹¨μ–΄μ˜ 수λ₯Ό 좜λ ₯ν•œλ‹€.

 

풀이

κ²°κ΅­ 선을 κ·Έμ—ˆμ„λ•Œ κ²ΉμΉ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 말은 μ–‘μͺ½ μŒμ„ μ΄λ€„μ•Όν•œλ‹€λŠ”λ§

풀이가 많이 μƒλž΅λ˜κΈ΄ ν–ˆμ§€λ§Œ

[πŸ• Baaaaaarking/0x08κ°• - μŠ€νƒμ˜ ν™œμš© (μˆ˜μ‹μ˜ κ΄„ν˜ΈμŒ)] - [BOJ S4}[C++) 4949번: κ· ν˜•μž‘νžŒ 세상

λ‹€μŒκ³Ό 같은 κ΄„ν˜Έ λ¬Έμ œμ™€ λΉ„μŠ·ν•œ μœ ν˜•μ΄λΌκ³  μƒκ°ν•˜λ©΄ 접근이 쉽닀

 

즉 μŠ€νƒμ„ μ¨μ„œ κΌ­λŒ€κΈ°μ— λ‹€μŒ μš”μ†Œμ™€ 같은애가 있으면 pop

μ•„λ‹ˆλΌλ©΄ push 

 

λ§ˆμ§€λ§‰μ— μŠ€νƒμ— λ‚¨μ€κ²Œ μ—†λ‹€λ©΄ 쌍이 잘 λ§žμ•˜λ‹€λŠ” λœ»μ΄λ―€λ‘œ κ°―μˆ˜μ— 카운트

// Authored by : seondal
// Co-authored by : -

//#include <bits/stdc++.h>
#include <iostream>
#include <stack>

using namespace std;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
   
    int n, ans=0;
    cin >> n;
    while(n--){
        string input;
        cin >> input;
        stack<char> s;
        for(int i=0; i<input.length(); i++){
            if(!s.empty() && s.top()==input[i]) s.pop();
            else s.push(input[i]);
        }
        if(s.empty()) ans++;
    }
    cout << ans;
    return 0;
}

/*
 */
λ°˜μ‘ν˜•