728x90
728x90
풀이
뭔가 어디서 풀어본 문제인 느낌???
규칙성을 찾아보자면
N=3일때, 오른쪽,아래,왼쪽,위 3 2 2 1 1
N=4일때, 오른쪽,아래,왼쪽,위 4 3 3 2 2 1 1
이런식으로 흘러가는 것을 알 수 있다.
이를 활용해 맨 첫 번째 열은 N개 채워주고 그다음부터 N-1개씩 (아래,왼쪽)과 (위,오른쪽)으로 묶어서 둘 중 하나 실행할때마다 N을 하나씩 감소해주었다.
엄청한 하드 코딩으로 풀어서 다른 분들 코드보면서 어떻게 풀었는지 봐야겠다 ㅜ.. 규칙성 찾는데는 별 어렵지 않았다 ~
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int test_case;
cin >> test_case;
for (int i = 0; i < test_case; i++) {
int arr[11][11] = { 0, };
int N;
cin >> N;
int num = 1;
// 1행 채우기
for (int p = 0; p < N; p++) {
arr[0][p] = num;
num++;
}
int j = 0, k = N - 1;
int count = N - 1;
while (count >0) {
for (int p = 0; p < count; p++) { // 오
j++;
arr[j][k] = num;
num++;
}
for (int p = 0; p < count; p++) { // 아래
k--;
arr[j][k] = num;
num++;
}
count--;
for (int p = 0; p < count; p++) { // 왼
j--;
arr[j][k] = num;
num++;
}
for (int p = 0; p < count; p++) { // 위
k++;
arr[j][k] = num;
num++;
}
count--;
} // while
cout << "#" << i+1 << endl;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
cout << arr[i][j] << " ";
}
cout << '\n';
}
} // for
return 0;
}
728x90
728x90
'Algorihtm > SWEA' 카테고리의 다른 글
C++ SWEA 1989. 초심자의 회문 검사 (1) | 2023.10.29 |
---|---|
C++ SWEA 1984. 중간 평균값 구하기 (0) | 2023.10.29 |
C++ SWEA 2001. 파리 퇴치 (1) | 2023.10.28 |
C++ SWEA 1926. 간단한 369게임 (0) | 2023.10.24 |
C++ SWEA [S/W 문제해결 기본] 1일차 - 최빈수 구하기 (0) | 2023.10.20 |