반응형
#include<stdio.h>
#include<algorithm>
int a[1000][1000];
int main(void)
{
int N,num;
scanf("%d", &N);
scanf("%d", &num);
int tmp = N;
int r = N / 2;
int b[2] = {0,0};
a[r][r] = 1; // N이 홀수일 때 맨 가운데 값 1 설정
for (int i = 0; i < r; i++)
{
for (int j = 0; j < tmp - 1; j++)
{
// 배열에 숫자로 채우기
if (N % 2 == 1) // N이 홀수일때
{
a[j + i][i] = tmp * tmp - j;
a[N - 1 - i][j + i] = tmp * tmp - j - 1 * (tmp - 1);
a[N - 1 - j - i][N - 1 - i] = tmp * tmp - j - 2 * (tmp - 1);
a[i][N - 1 - j - i] = tmp * tmp - j - 3 * (tmp - 1);
}
else if (N % 2 == 0) // N이 짝수일때
{
a[j + i][i] = tmp * tmp - j - 2 * (tmp - 1);
a[N - 1 - i][j + i] = tmp * tmp - j - 3 * (tmp - 1);
a[N - 1 - j - i][N - 1 - i] = tmp * tmp - j;
a[i][N - 1 - j - i] = tmp * tmp - j - 1 * (tmp - 1);
}
// 찾는 값 좌표 기록하기
if (a[j + i][i] == num)
{
b[0] = j + i;
b[1] = i;
}
else if (a[N - 1 - i][j + i] == num)
{
b[0] = N - 1 - i;
b[1] = j + i;
}
else if (a[N - 1 - j - i][N - 1 - i] == num)
{
b[0] = N - 1 - j - i;
b[1] = N - 1 - i;
}
else if (a[i][N - 1 - j - i] == num)
{
b[0] = i;
b[1] = N - 1 - j - i;
}
}
tmp -= 2;
}
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
printf("%d %d", b[0]+1, b[1]+1);
}
풀이는 1000*1000 배열을 생성하고 N이 만약 7이라면 맨 바깥쪽 부분을 숫자로 채운 뒤 N - 2를 해주어 N이 5인 경우도 똑같이 채워나가는 식으로 하였고 N 이 홀수 일때와 짝수 일때 나눠서 풀이를 하였다.
https://www.acmicpc.net/problem/1913
반응형
'🧩PS > 🥈Nomal' 카테고리의 다른 글
[C/C++] 백준 1373번 2진수 8진수 (0) | 2020.04.13 |
---|---|
[ C/C++] 백준 1212번 8진수 2진수 (0) | 2020.04.13 |
[C/C++] 백준 1934번 최소공배수 (최대공약수, 유클리드 호제법 사용) (0) | 2020.04.12 |
[ C/C++] 백준 1009번 분산 처리 (0) | 2020.04.12 |
[C/C++] 백준 1920번 수 찾기 (0) | 2020.04.12 |