하드코딩의 한계...
다시 풀어봐야됌...
#include <iostream>
using namespace std;
int main()
{
int N, M;
cin >> N >> M;
int Array[1000];
int Out[1000] = { 0 };
for (int i = 0; i < N; i++)
Array[i] = i + 1;
int out_idx = 0;
int Count = 0;
int Target = 0;
while (1)
{
if (out_idx >= N - 2)
break;
if (Target >= N)
Target %= N;
if (Count == M - 1 && Array[Target] != 0)
{
Out[out_idx++] = Array[Target];
Array[Target] = 0;
Count = 0;
}
else if (Array[Target] != 0)
Count++;
Target++;
if (out_idx >= N - 2)
break;
}
if (Out[0] != 0)
{
cout << "<" << Out[0];
for (int i = 1; i < N - 2; i++)
cout << ", " << Out[i];
for (int i = 0; i < N; i++, Target++)
{
if (Target >= N)
Target %= N;
if (Array[Target] != 0)
cout << ", " << Array[Target];
}
cout << ">";
}
else if (N == 1)
cout << "<1>";
else if (N == 2)
{
if (M == 2)
cout << "<2, 1>";
else
cout << "<1, 2>";
}
}
다시 풀어봐야됌...
#include <iostream>
using namespace std;
int main()
{
int N, M;
cin >> N >> M;
int Array[1000];
int Out[1000] = { 0 };
for (int i = 0; i < N; i++)
Array[i] = i + 1;
int out_idx = 0;
int Count = 0;
int Target = 0;
while (1)
{
if (out_idx >= N - 2)
break;
if (Target >= N)
Target %= N;
if (Count == M - 1 && Array[Target] != 0)
{
Out[out_idx++] = Array[Target];
Array[Target] = 0;
Count = 0;
}
else if (Array[Target] != 0)
Count++;
Target++;
if (out_idx >= N - 2)
break;
}
if (Out[0] != 0)
{
cout << "<" << Out[0];
for (int i = 1; i < N - 2; i++)
cout << ", " << Out[i];
for (int i = 0; i < N; i++, Target++)
{
if (Target >= N)
Target %= N;
if (Array[Target] != 0)
cout << ", " << Array[Target];
}
cout << ">";
}
else if (N == 1)
cout << "<1>";
else if (N == 2)
{
if (M == 2)
cout << "<2, 1>";
else
cout << "<1, 2>";
}
}
댓글
댓글 쓰기