๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 17276๋ฒˆ - ๋ฐฐ์—ด ๋Œ๋ฆฌ๊ธฐ

by ์•ˆ์ฃผํ˜• 2022. 9. 15.

๋ฌธ์ œ

17276๋ฒˆ: ๋ฐฐ์—ด ๋Œ๋ฆฌ๊ธฐ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ํšŒ์ „ ์—ฐ์‚ฐ์„ ๋งˆ์นœ ํ›„ ๋ฐฐ์—ด์˜ ์ƒํƒœ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. n์ค„์— ๊ฑธ์ณ ๊ฐ ์ค„์— n๊ฐœ์˜ ์ •์ˆ˜๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค. 

www.acmicpc.net

์ฝ”๋“œ

#include <iostream>
#include <memory.h>

using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int T; cin>>T;
    while(T--){
        int n, d; cin>>n>>d;
        int map[501][501] = {0, };
        int temp[501][501];
        for(int i=0; i<n; i++){
            for(int k=0; k<n; k++){
                cin>>map[i][k];
            }
        }
        memcpy(temp, map, sizeof(temp));
        if(d > 0){   // ์‹œ๊ณ„๋ฐฉํ–ฅ 45๋„ ํšŒ์ „
            int cnt = d / 45;
            while(cnt--){
                for(int i=0; i<n; i++) temp[i][(n+1)/2 - 1] = map[i][i];
                for(int i=0; i<n; i++) temp[i][i] = map[(n+1)/2 - 1][i];
                for(int i=n-1; i>=0; i--) temp[(n+1)/2 - 1][n-1-i] = map[i][n-1-i];
                for(int i=n-1; i>=0; i--) temp[i][n-1-i] = map[i][(n+1)/2 - 1];
                memcpy(map, temp, sizeof(map));
            }
        }
        else{   // ๋ฐ˜ ์‹œ๊ณ„๋ฐฉํ–ฅ 45๋„ ํšŒ์ „
            int cnt = abs(d) / 45;
            while(cnt--){
                for(int i=0; i<n; i++) temp[i][i] = map[i][(n+1)/2 - 1];
                for(int i=0; i<n; i++) temp[(n+1)/2 - 1][i] = map[i][i];
                for(int i=n-1; i>=0; i--) temp[i][n-1-i] = map[(n+1)/2 - 1][n-1-i];
                for(int i=n-1; i>=0; i--) temp[i][(n+1)/2 - 1] = map[i][n-1-i];
                memcpy(map, temp, sizeof(map));
            }
        }
        for(int i=0; i<n; i++){
            for(int k=0; k<n; k++){
                cout<<temp[i][k] << ' ';
            }
            cout<<'\n';
        }
    }
}

ํ’€์ด

๋ฌธ์ œ์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ธ๋ฑ์Šค ์œ„์น˜๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ๋ช…์‹œํ•ด ์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ฒŒ ์–ด๋ ต์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

  • X์˜ ์ฃผ ๋Œ€๊ฐ์„ ์„ ((1,1), (2,2), โ€ฆ, (n, n)) ๊ฐ€์šด๋ฐ ์—ด ((n+1)/2 ๋ฒˆ์งธ ์—ด)๋กœ ์˜ฎ๊ธด๋‹ค.
  • X์˜ ๊ฐ€์šด๋ฐ ์—ด์„ X์˜ ๋ถ€ ๋Œ€๊ฐ์„ ์œผ๋กœ ((n, 1), (n-1, 2), โ€ฆ, (1, n)) ์˜ฎ๊ธด๋‹ค.
  • X์˜ ๋ถ€ ๋Œ€๊ฐ์„ ์„ X์˜ ๊ฐ€์šด๋ฐ ํ–‰ ((n+1)/2๋ฒˆ์งธ ํ–‰)์œผ๋กœ ์˜ฎ๊ธด๋‹ค.

์ƒˆ๋กœ์šด ์ž„์‹œ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ, ๊ทธ ๋ฐฐ์—ด์— ๋Œ€์ž…ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋„ฃ์–ด๊ฐ€๋ฉด์„œ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ,
์ž˜ ๋ณด๋ฉด ์‹œ๊ณ„ ๋ฐฉํ–ฅ์ผ ๋•Œ์™€ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์ผ ๋•Œ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๊ฐ€ ์„œ๋กœ ๋ฐ˜๋Œ€์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์–ด๋Š ๋ฐฉํ–ฅ์ด๋“  ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์ œ๋Œ€๋กœ ๊ตฌํ˜„ํ•ด์ค€๋‹ค๋ฉด ๋‚˜๋จธ์ง€ ํ•œ์ชฝ์€ ๊ทธ๋ƒฅ ์ธ๋ฑ์Šค๋งŒ ์„œ๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€