-
1228.암호문1알고리즘/SW Expert Academy 2020. 3. 29. 18:07
이번에 풀 문제는 Sw expert의 1228 암호문1이다.
이 문제는 STL list 사용법을 익히는데 도움이 되었던 것 같다.
생각보다 오래걸렸고 그 이유는 입력받는 부분에서 헤맸다..;;
또한 구현 시에 입력하는 방법에 대해서도 생각을 다시해보게 되었다.
입력을 구현하는 것도 굉장히 중요하다는 것을 깨달았다.
< Code 설명 >
#include <iostream> #include <list> using namespace std; int main() { for(int e=1; e<=10; e++ ){ // 테스트 케이스가 10개 list<int> ans; // 암호문 리스트를 생성해주자 int n; // 암호문 길이 cin >> n; // 입력 for(int i=0; i<n; i++){ // 첫 번째 정수는 원본 암호문 길이 int a; // 암호문 변수 cin >> a; // 하나씩 받아서 ans.push_back(a); // list에 넣어준다 } int m; // 명령어 갯수 cin >> m; // 입력 for(int i=0; i<m; i++){ // 명령어 길이만큼 입력받기 char b; // 명령어를 나누는 기준 '|' 변수 cin >> b; // 입력받아서 다음 걸 받도록 하자 int x, y; // 명령어가 삽입될 위치와 길이 cin >> x >> y; // 입력 list<int>ans2; // 명령어가 저장될 리스트 for(int j=0; j<y; j++){ // 명령어 길이만큼 입력 int c; // 명령어 변수 cin >> c; // 하나씩 입력받아서 ans2.push_back(c); // 명령어 리스트에 저장 } list<int>::iterator it = ans.begin(); // 암호문 시작을 나타내는 iter for(int k=0; k<x; k++) // 삽입할 위치만큼 iterator를 옮기기 위함 it++; // 옮김 ans.splice(it,ans2); // 암호문 리스트의 iter 위치에 명령어 리스트 삽입 } cout <<endl; cout << '#' << e << " "; for(int z=0; z<10; z++){ // 암호문 10개만 출력하면 되므로 cout << ans.front() << " "; // 암호문 제일 앞에서 부터 출력 ans.pop_front(); // 출력한 건 pop으로 빼줌 } cout << endl; } return 0; }
반드시 알아야할 TIP!!
# 입력받는 것도 잘 생각하고 받자!
# list 사용법 등 STL은 기본!
반응형'알고리즘 > SW Expert Academy' 카테고리의 다른 글
5644.무선충전 (0) 2020.06.02 1229.암호문2 (0) 2020.03.31 1226.미로1 & 1227.미로2 (0) 2020.03.26 1225. 암호생성기 (0) 2020.03.24 1224.계산기3 (0) 2020.03.24 댓글