https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pq-OKAVYDFAUq&categoryId=AV5Pq-OKAVYDFAUq&categoryType=CODE&problemTitle=1961&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

- 2차원 vector배열 함수로 넘기기, clear사용, 90도 회전시 좌표변경식

#include<iostream>
#include<vector>
#include<algorithm>
#include<string>

using namespace std;

int sun = 0;
int n;

vector<vector<string>> result(3);

void rotate(int index, vector<vector<int>>&arr) {

    vector<vector<int>> temp_arr(10, vector<int>(10));
    // 배열 90도 회전
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            temp_arr[i][j] = arr[abs(j - (n - 1))][i];
        }
    }
    
    arr = temp_arr;

    string tmp;
    for (int i = 0; i < n; i++) {
        for(int j=0; j<n; j++){
            tmp += to_string(arr[i][j]);
        }
        result[index].push_back(tmp);
        tmp.clear();
    }


}

void run() {
    sun++;
    cin >> n;

    vector<vector<int>> arr(n, vector<int>(n));

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> arr[i][j];
        }
    }

    for (int i = 0; i < 3; i++) {
        rotate(i, arr);
    }

    cout << "#" << sun << endl;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < 3; j++) {
            cout << result[j][i] << " ";
        }
        cout << endl;
    }
    
    for (int i = 0; i < 3; i++) {
        result[i].clear();
    }

}

int main() {
    int t;

    cin >> t;

    for (int i = 0; i < t; i++)
    {
        run();
    }
    
    return 0;
}

+ Recent posts