https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14zIwqAHwCFAYD
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
<풀이>
1. 암호문과 명령어를 입력받는다.
2. 암호문을 명령어에 맞게 수정하고, 암호문의 처음 10개의 숫자를 출력한다.
<해법>
1. 자료구조 선택하기
=> 저는 list 자료구조를 선택하였습니다. I 명령어는 list의 splice를, D는 erase를, A는 push_back를 사용하여 구현하였습니다.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include <iostream> #include <list> using namespace std; int N; list<int> code; int main() {     int test_case;     int T;     T = 10;     for (test_case = 1; test_case <= T; test_case++) {         //초기화         N = 0;         code.clear();         //입력 및 해법         cin >> N;         for (int i = 0; i < N; i++) {             int num = 0;             cin >> num;             code.push_back(num);         }         cin >> N;         for (int i = 0; i < N; i++) {             char cmd;             int x, y, s;             cin >> cmd;             if (cmd == 'I') {                 cin >> x >> y;                 list<int> add;                 for (int j = 0; j < y; j++) {                     cin >> s;                     add.push_back(s);                 }                 auto iter = code.begin();                 while (x--) iter++;                 code.splice(iter, add);             }             else if (cmd == 'D') {                 cin >> x >> y;                 auto iter = code.begin();                 while (x--) iter++;                 while (y--) {                     iter = code.erase(iter);                 }             }             else {                 cin >> y;                 for (int j = 0; j < y; j++) {                     cin >> s;                     code.push_back(s);                 }             }         }         //출력         cout << "#" << test_case << " ";         for (int i = 0; i < 10; i++) {             cout << code.front() << " ";             code.pop_front();         }         cout << "\n";     }     //종료     return 0; } | 
리스트 자료구조에 대해 알아볼 수 있는 문제였습니다.
'알고리즘 문제풀이 > SWEA' 카테고리의 다른 글
| [C++] SWEA 1233 - 사칙연산 유효성 검사 (0) | 2022.12.31 | 
|---|---|
| [C++] SWEA 1231 - 중위순회 (1) | 2022.12.31 | 
| [C++] SWEA 5644 - 무선 충전(2) (1) | 2022.12.24 | 
| [C++] SWEA 1227 - 미로2 (0) | 2022.12.24 | 
| [C++] SWEA 1225 - 암호생성기 (0) | 2022.12.24 |