본문 바로가기
Programming/Algorithm

swe 1228 암호문1

by OKOK 2018. 4. 2.

1. swap 할때, 이렇게 복사하는 것도 나쁘지 않은 것 같습니다. 여러개의 변수가 필요하다면, 변수로 이용해야 하지만 지금처럼 1차원 맵일때는 제일 간편하게 하도록 합니다.


1. 입력을 받고,

2. 앞의 것은 그대로 복사 받고

3. 뒤로 미루는 작업을 하는데


결과가 10까지만 원하므로, 조건문을 넣는 것에 주의하도록 합니다. 스트링 받고 처리하는 것도 연습해서 아주 좋습니다.  


/*

2018.04.02.1426 문제 시작하도록 하겠습니다.


1228. 암호문 1


스트링 10개 저장하는 것을 만듭니다. 결과의 처음 10개를 숫자만 필요하기 때문입니다.


일단 받고 나서 그 뒤에에 붙이도록 하겠습니다.

*/


#include <iostream>

#include <string>

using namespace std;


#define SIZE 30

string map[SIZE];  // 변동 가능.

string map_store[SIZE]; // 저장해둠.

string command[10];

int N;

int K;

char a;

int ck;

int startI;

int trash;


void problemIn() {

cin >> N;

for (int i = 0; i < N; i++) {

cin >> map[i];

}

}


void init() {


}


void copy_map(string a[SIZE], string b[SIZE]) {

for (int i = 0; i < 10; i++) {

b[i] = a[i];

}

}


void solve() {

cin >> K;

for (int i = 0; i < K; i++) {

cin >> a;

cin >> startI;

cin >> ck;


if (startI < 10) {

// 입력을 받고

for (int j = startI; j < startI + ck; j++) {

cin >> map_store[j];

}


// 앞의 것은 그대로 복사합니다.

for (int k = 0; k < startI; k++) {

if (k > 9) break;

map_store[k] = map[k];

}


// 뒤로 미루는 작업입니다. 단, 10까지만 하고 뒤에는 신경쓰지 않습니다.

for (int l = startI; l < 10; l++) {

if ((l + ck) > 9) break;

map_store[l + ck] = map[l];

}


copy_map(map_store, map);

}

else {

for (int m = 0; m < ck; m++) {

cin >> trash;

}

}

}

}


int main() {

for (int tc = 1; tc <= 10; tc++) {

problemIn();

solve();

cout << "#" << tc << " ";

for (int i = 0; i < 10; i++) {

cout << map[i] << " ";

}

cout << endl;

init();

}

return 0;