[ 문제 ]
[ 접근방법 ]
중심에서부터 시작하여 2의 배수 크기로 4번 회전하는 것이 한 사이클이고,
이를 반복하면 달팽이 모양이 된다.
이를 반복문으로 간결하게 표현하였다.
[ 소스코드 ]
#include <iostream>
using namespace std;
int n, m, snail[1000][1000];
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
int center = n / 2;
snail[center][center] = 1;
int cnt = 2;
for (int layer = 1; layer <= center; layer++)
{
int x = center - layer, y = center - layer;
for (int dir = 0; dir < 4; dir++)
{
for (int step = 1; step <= 2 * layer; step++)
{
x += dx[dir], y += dy[dir];
snail[x][y] = cnt++;
}
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << snail[i][j] << " ";
}
cout << "\n";
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (snail[i][j] == m)
{
cout << i + 1 << " " << j + 1 << "\n";
return 0;
}
}
}
return 0;
}
'PS' 카테고리의 다른 글
[ 백준 / C++ ] 1890 : 점프 (0) | 2024.11.27 |
---|---|
[ 백준 / C++ ] 1138 : 한 줄로 서기 (0) | 2024.11.20 |
[ 백준 / C++ ] 7795 : 먹을 것인가 먹힐 것인가 (2) | 2024.11.18 |
[ 백준 / C++ ] 3085 : 사탕 게임 (0) | 2024.11.15 |
[ 백준 / C++ ] 5014 : 스타트링크 (0) | 2024.11.14 |