๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿฆ„ | ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต/๊ทธ ์™ธ

์œค์„ฑ์šฐ ์—ดํ˜ˆ C ๋„์ „ ํ”„๋กœ๊ทธ๋ž˜๋ฐ 3 - 2

by KASSID 2021. 12. 21.

๋ชฉ์ฐจ

    ๋‹ฌํŒฝ์ด ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ์ถœ๋ ฅ์„ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ

    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์”ฉ ์ค„์–ด๋“ ๋‹ค.

     

    ์˜ˆ์‹œ (ํฌ๊ธฐ/๋ฐฉํ–ฅ)

    ๋ฐฉํ–ฅ
    ํฌ๊ธฐ

    ↓ ←
     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)

     

    ์ด์— ๋”ฐ๋ผ ๋ฐ˜๋ณต๋ฌธ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ–ˆ๊ณ 

    ๋‹ค์Œ ์„ธํŠธ๋ฅผ ๋„˜์–ด๊ฐˆ ๋•Œ์—๋Š” ์Šค์œ„์นญํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•ด ์ฃผ์—ˆ๋‹ค!

    ๋Œ“๊ธ€