[#89][자격증] 정보처리기사 실기 알고리즘 (2차원배열 90도 회전)

정보처리기사 실기 알고리즘 (2차원배열 90도 회전)

 다음은 배열 P에값을 저장한 후 아래 그림과 같은 과정으로 두 번 90도 회전하여 결과를 다시 배열 P에 이동하는 순서도이다. 빈 부분을 채워 순서도를 완성하시오.
 5행 5열의 2차원 배열 P(5,5)에 숫자를 채운 후, 우측으로 90도 회전한 결과를 배열 Q(5,5)로 이동시키고 다시 배열 Q(5,5)를 우측으로 90도 회전시켜 배열 P(5,5)로 이동시키고자 한다.



 




----------------------------정답----------------------------------
① H = H + 2
② H = 1, 5, 1
③ 6 - H
④ Q(L, Y)
⑤ P(L, Y)
-------------------------------------------------------------------


C++구현
#include <iostream>
using namespace std;
 
int main(){
    int P[6][6= { 0 }, Q[6][6= { 0 }, H = 0, X, Y, L;
 
    for (X = 1; X <= 5; X++) {
        for (Y = 1; Y <= 5; Y++) {
            H = H + 2;
            P[X][Y] = H;
        }
    }
 
    //원래 P배열 출력
    for (X = 1; X <= 5; X++) {
        for (Y = 1; Y <= 5; Y++) {
            cout << P[X][Y] << " ";
        }
        cout << "\n";
    }
    cout << "---------------------------------" << endl;
    for (X = 2; X >= 1; X--) {
        for (Y = 1; Y <= 5; Y++) {
            for (H = 1; H <= 5; H++) {
                L = 6 - H;
                if (X == 2) {
                    Q[Y][H] = P[L][Y];
                }
                else {
                    P[Y][H] = Q[L][Y];
                }
            }
        }
    }
 
    //Q배열 출력
    for (X = 1; X <= 5; X++) {
        for (Y = 1; Y <= 5; Y++) {
            cout << Q[X][Y] << " ";
        }
        cout << "\n";
    }
    cout << "---------------------------------" << endl;
 
    //P배열 출력
    for (X = 1; X <= 5; X++) {
        for (Y = 1; Y <= 5; Y++) {
            cout << P[X][Y] << " ";
        }
        cout << "\n";
    }
    return 0;
}
 
cs

댓글

가장 많이 본 글