N

(SWEA c++)1229. [S/W 문제해결 기본] 8일차 - 암호문2 본문

SW Expert Academy

(SWEA c++)1229. [S/W 문제해결 기본] 8일차 - 암호문2

naeunchan 2020. 10. 13. 10:42
728x90
반응형

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

 

SW Expert Academy

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

swexpertacademy.com

 

list를 이용한 문제 풀이.

암호문1에서 'D' 명령어가 추가 되었다.

delete 해야 하므로 list의 erase 함수를 이용하였다.

 

erase 함수는 삭제한 원소의 다음 원소를 가리키는 iterator를 반환하기 때문에 지우려고 하는 위치의 iterator에 대입해주면 원하는 개수의 원소를 지울 수 있다.

#include <iostream>
#include <list>

using namespace std;

int main(void)
{
    for(int t = 1; t <= 10; t++)
    {
        int n, x, y, s;
        char c;
        list<int> lt;
        auto itr = lt.begin();
        
        cin >> n;
        for(int i = 0; i < n; i++)
        {
            cin >> x;
            lt.push_back(x);
        }
        
        cin >> n;
        for(int i = 0; i < n; i++)
        {
            cin >> c;
            if(c == 'I')
            {
                list<int> tmp;
                itr = lt.begin();
                
                cin >> x >> y;
                for(int j = 0; j < x; j++)
                    itr++;
                
                for(int j = 0; j < y; j++)
                {
                    cin >> s;
                    tmp.push_back(s);
                }
                lt.splice(itr, tmp);
            }
            else if(c == 'D')
            {
                itr = lt.begin();
                cin >> x >> y;
                for(int j = 0; j < x; j++)
                    itr++;
                
                for(int j = 0; j < y; j++)
                    itr = lt.erase(itr);
            }
        }
        
        itr = lt.begin();
        cout << "#" << t << " ";
        for(int i = 0; i < 10; i++, itr++)
            cout << *itr << " ";
        cout << endl;
    }
    return 0;
}
728x90
반응형