N

(SWEA c++)1225. [S/W 문제해결 기본] 7일차 - 암호생성기 본문

SW Expert Academy

(SWEA c++)1225. [S/W 문제해결 기본] 7일차 - 암호생성기

naeunchan 2020. 10. 12. 11:17
728x90
반응형

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

 

SW Expert Academy

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

swexpertacademy.com

 

queue를 이용한 문제 풀이.

test case는 10개인데, 문제에 써져 있지 않으므로 주의하여 코딩하자.

우선 8개의 숫자를 int형 queue인 q에 담아주자.

그리고 q.front() - count > 0일 때까지 사이클을 돈다.

 

count는 1 ~ 5까지 빼는 수를 의미하므로, 6 이상이면 count = 1로 고쳐준다.

q.push(q.front() - count)를 해주고, pop을 하여 8개의 숫자를 유지해준다.

만약 q.front() - count <= 0이면 while문을 탈출하고

q의 마지막에 0을 push한다.

또한 q.pop을 하여 맨 앞의 숫자를 제거하여 8자리 암호를 유지한다.

#include <iostream>
#include <queue>

using namespace std;

int main(void)
{
    for(int t = 1; t <= 10; t++)
    {
        int tmp, n, count = 1;
        queue<int> q;
        
        cin >> n;
        for(int i = 0; i < 8; i++)
        {
            cin >> tmp;
            q.push(tmp);
        }
        
        while(q.front() - count > 0)
        {
            q.push(q.front() - count);
            q.pop();
            count++;
            if(count > 5)
                count = 1;
        }
        
        q.push(0);
        q.pop();
        
        cout << "#" << t << " ";
        while(!q.empty())
        {
            cout << q.front() << " ";
            q.pop();
        }
        cout << endl;
    }
    return 0;
}
728x90
반응형