๋ชฉ์ฐจ
๋ฌํฝ์ด ๋ฐฐ์ด์ ๋ง๋ค์ด์ ์ถ๋ ฅ์ ํ๋ ํ๋ก๊ทธ๋จ
ex)
1 | 2 | 3 | 4 | 5 |
16 | 17 | 18 | 19 | 6 |
15 | 24 | 25 | 20 | 7 |
14 | 23 | 22 | 21 | 8 |
13 | 12 | 11 | 10 | 9 |
//
// Cproject
//
// Created by kassid on 2021/12/19.
// Ex)
// 1 2 3 4 5
// 16 17 18 19 6
// 15 24 25 20 7
// 14 23 22 21 8
// 13 12 11 10 9
//
#include <stdio.h>
void makeArr();
int main(void) {
makeArr();
return 0;
}
void makeArr() {
int arr[20][20];
int num = 1; // number (1~)
int col = 0; // column
int row = -1; // row
int direct = 1; // switch set1,2
int len = 0; // the length of column
printf("set the length(1~20) : ");
scanf("%d", &len); // input the len
for (int i = 0; i < len; i++) {
arr[col][++row] = num++; //fill arr[col==0]
}
// SET : 1.(down, left) 2.(up, right)
for (int j = len - 1; j > 0; j--) { // Total number of set repitation
for (int a = 0; a < j; a++) { //down or up
if (direct == 1) { //down
col++;
}
else { //up
col--;
}
arr[col][row] = num++;
}
for (int b = 0; b < j; b++) { //left or right
if (direct == 1) { //left
row--;
}
else { //right
row++;
}
arr[col][row] = num++;
}
direct *= -1; //switch set
}
for (int i = 0; i < len; i++) { //print arr
for (int j = 0; j < len; j++) {
printf("%3d ", arr[i][j]);
}
printf("\n");
}
}
์ฝ๋ฉํธ)
๊ด๊ณ์ฑ์ ์ฐพ๋ ๊ฒ์ด ํต์ฌ์ธ ๋ฌธ์ ์๋๋ฐ, ์ค๋ฅธ์ชฝ์ผ๋ก ๋์๊ฐ๋ ๋ฐฉ์์ด์๊ณ
์ด์ ํฌ๊ธฐ๋ฅผ ์ ๋ ฅ ๋ฐ์ผ๋ฉด (→๋ฐฉํฅ/ ์ด์ ํฌ๊ธฐ๋งํผ / 0ํ)์ด ์ฑ์์ง๋ค.
๊ทธ ์ดํ์๋
์์๋๋ก ↓←↑→์ด ๋ฐ๋ณต๋๋ค. ์ด๋ ๊ฐ ๋ฐฉํฅ๋ง๋ค ์ซ์๊ฐ ์ฑ์์ง๋ ํฌ๊ธฐ๋
↓← / ↑→ ๊ฐ ๊ฐ๊ฐ ๊ฐ์ ๋งํผ ์ฑ์์ง๋ค. ex) 4๊ฐ ,4๊ฐ / 3๊ฐ, 3๊ฐ
๋ฐ๋ผ์ (↓← / ↑→ )๋ฅผ ์ธํธ๋ก ์ง์ ํ๋ค.
๋ํ
์ฒ์ ์ง์ ํ ์ด์ ํฌ๊ธฐ-1 ๋งํผ์ ์๊ฐ ์ฒซ ์ธํธ์ ์ฑ์์ง๊ณ ,
์ดํ ๋ค์ ์ธํธ๋ก ๋์ด๊ฐ ๋ ์ฑ์์ง๋ ํฌ๊ธฐ๊ฐ 1์ฉ ์ค์ด๋ ๋ค.
์์ (ํฌ๊ธฐ/๋ฐฉํฅ)
๋ฐฉํฅ ํฌ๊ธฐ |
→ 5 |
↓ ← 4 4 |
↑ → 3 3 |
↓ ← 2 2 |
↑ → 1 1 |
์ธํธ์ | - | 1 | 2 | 3 | 4 |
์ธํธ ์๋ ์ด์ ํฌ๊ธฐ -1 ๋งํผ์ธ ๊ฒ์ ์ ์ ์๋ค.
ex) 5 44 33 22 11 (4set) / 4 33 22 11 (3set) / 3 22 11 (2set)
์ด์ ๋ฐ๋ผ ๋ฐ๋ณต๋ฌธ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๊ณ
๋ค์ ์ธํธ๋ฅผ ๋์ด๊ฐ ๋์๋ ์ค์์นญํ ์ ์๋ ๋ณ์๋ฅผ ์ง์ ํด ์ฃผ์๋ค!
'๐ฆ | ์ฝ๋ฉํ ์คํธ ์ฐ์ต > ๊ทธ ์ธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ดํ C_ ๋ฌธ์์ด์ฒ๋ฆฌ (0) | 2022.01.10 |
---|
๋๊ธ