반응형
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
if (n > 100) {
cout << "입력될 정수의 개수는 100 이하여야 합니다." << endl;
return 1;
}
vector<int> integers(n);
for (int i = 0; i < n; ++i) {
std::cin >> integers[i];
}
int k;
std::cin >> k;
if (k < n) {
std::vector<int> shiftedIntegers(n);
for (int i = 0; i < n; ++i) {
shiftedIntegers[(i + k) % n] = integers[i];
}
integers = shiftedIntegers;
}
else {
cout << "k < n" << endl;
}
for (int i = 0; i < n; ++i) {
cout << integers[i] << " ";
}
cout << endl;
return 0;
}
vector를 사용했습니다. 동적 배열을 만들어준 후 다른 배열을 하나 더 만들어줘서 거기에 옮기는 방식으로 진행이 되는데요.
먼저 for문을 통해 입력받을 정수의 개수를 구합니다.
그 다음 vector를 써주고 int i = 0; i <n; ++i 방식으로 진행이 되는데요. 여기서
if (k < n) {
vector<int> shiftedIntegers(n);
for (int i = 0; i < n; ++i) {
shiftedIntegers[(i + k) % n] = integers[i];
}
integers = shiftedIntegers;
}
해당 부분의 경우 나머지를 구하는 방식으로 진행이 되는데요. 이것이 가능한 이유는 만약에 정수가 4개라면 4번째는 똑같이 제자리로 오게 되기 때문에 그것을 고려하여 % 방식을 통해 진행이 되는 것입니다.
원리만 알면 가볍게 풀 수 있는 문제입니다.
반응형