N

(SWEA c++)1234. [S/W 문제해결 기본] 10일차 - 비밀번호 본문

SW Expert Academy

(SWEA c++)1234. [S/W 문제해결 기본] 10일차 - 비밀번호

naeunchan 2020. 10. 14. 08:46
728x90
반응형

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14_DEKAJcCFAYD&categoryId=AV14_DEKAJcCFAYD&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

스택을 이용한 문제.

n 길이의 숫자를 받아오며, string 형태로 숫자를 저장한다.

n개의 길이만큼 char형 stack s에 저장을 하는데 여기서 비밀번호를 만드는 과정을 적용한다.

 

1. s가 비어있지 않고 top과 i번째의 숫자가 같으면 pop().

2. s가 비어있거나 top과 i번째의 숫자가 같지 않으면 push()

 

이를 실행하고 ans 스택에 거꾸로 넣어주고 출력해주면 끝..!

#include <iostream>
#include <stack>
#include <string>
#include <algorithm>

using namespace std;

int main(void)
{
    for(int t = 1; t <= 10; t++)
    {
        int n;
        string tmp;
        stack<char> s, ans;
        
        cin >> n >> tmp;
        
        for(int i = 0; i < tmp.size(); i++)
        {
            if(!s.empty() && s.top() == tmp[i])
                s.pop();
            else
                s.push(tmp[i]);
        }
        
        cout << "#" << t << " ";
        while(!s.empty())
        {
            ans.push(s.top());
            s.pop();
        }
        while(!ans.empty())
        {
            cout << ans.top();
            ans.pop();
        }
        
        cout << endl;
    }
    return 0;
}
728x90
반응형