안녕하세요. 오늘은 오른쪽으로 움직일 거예요.
https://www.acmicpc.net/problem/31631
일단 단순하게 튕기는것만 고려를 해준다면 가장 큰 두개를 맨 끝 두개에, 그다음으로 큰 두개를 남은 칸중 맨 끝 두개에, 그 다음으로 큰 두개를 ... 이런식으로 가면 됩니다. 하지만 가지는 오른쪽먼저 움직이므로 더 큰게 오른쪽으로 가면 됩니다.
#include <iostream>
#define ll long long
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
ll N, i, Ans[5050] = { 0 };
cin >> N;
for (i = 1; i <= N / 2; i++)
{
if (i % 2 == 1)
{
Ans[i] = N - i * 2 + 2;
Ans[N - i + 1] = N - i * 2 + 1;
}
else
{
Ans[i] = N - i * 2 + 1;
Ans[N - i + 1] = N - i * 2 + 2;
}
}
if (N % 2 == 1) Ans[N / 2 + 1] = 1;
for (i = N; i >= 1; i--)
cout << Ans[i] << ' ';
}
감사합니다.