๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/CodeUp

1510 : ํ™€์ˆ˜ ๋งˆ๋ฐฉ์ง„

by ์•ˆ์ฃผํ˜• 2022. 1. 16.

๋ฌธ์ œ

 

ํ™€์ˆ˜ ๋งˆ๋ฐฉ์ง„

๋งˆ๋ฐฉ์ง„(magic square)์ด๋ž€ ๊ฐ€๋กœ, ์„ธ๋กœ, ๋Œ€๊ฐ์„ ์˜ ํ•ฉ์ด ๊ฐ™์€ ์‚ฌ๊ฐํ˜•์„ ๋งํ•œ๋‹ค. ํ™€์ˆ˜ n์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ n*n ํ™€์ˆ˜ ๋งˆ๋ฐฉ์ง„์„ ๋งŒ๋“ค์–ด ๋ณด์ž. ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์ด

codeup.kr

์ฝ”๋“œ

#include <iostream>
#include <vector>

using namespace std;
int arr[51][51];

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n; cin>>n;
    
    
    arr[0][n/2]=1;  //1. ์‹œ์ž‘์€ ์ฒซํ–‰, ํ•œ ๊ฐ€์šด๋ฐ ์—ด์— 1์„ ๋‘”๋‹ค.
    
    int row=0,col=n/2;
    bool flag = false;
    
    for(int i=2; i<=n*n; i++){
        if(flag){
            flag=false;
            row++;
            arr[row][col]=i;
            continue;
        }
        row--; col++;  //2. ํ–‰์„ ๊ฐ‘์†Œ, ์—ด์„ ์ฆ๊ฐ€
        if(row<0) row = n-1;  //3. ํ–‰์€ ๊ฐ์†Œํ•˜๋ฏ€๋กœ ์ฒซ ํ–‰๋ณด๋‹ค ์ž‘์•„์ง€๋Š” ๊ฒฝ์šฐ์—๋Š” ๋งˆ์ง€๋ง‰ ํ–‰์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.
        if(col>n-1) col = 0; //4. ์—ด์€ ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ ๋งˆ์ง€๋ง‰ ์—ด๋ณด๋‹ค ์ปค์ง€๋Š” ๊ฒฝ์šฐ์—๋Š” ์ฒซ ์—ด๋กœ ๋„˜์–ด๊ฐ„๋‹ค.
        arr[row][col] = i;
        if(i%n==0) flag=true;   //5. ๋„ฃ์€ ์ˆ˜๊ฐ€ n์˜ ๋ฐฐ์ˆ˜์ด๋ฉด ํ–‰๋งŒ ์ฆ๊ฐ€ํ•œ๋‹ค. ์—ด์€ ๋ณ€ํ™”์—†์Œ.
    }
    
    for(int i=0; i<n; i++){
        for(int k=0; k<n; k++){
            cout<<arr[i][k]<<' ';
        }
        cout<<'\n';
    }
}

 

ํ’€์ด

๊ธฐ์ดˆ์ ์ธ 2์ฐจ์› ๋ฐฐ์—ด์„ ํ™œ์šฉํ•œ ๊ตฌํ˜„ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ์ž˜ ์ฝ๊ณ  ์˜ฎ๊ฒจ ์ ์œผ๋ฉด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€