[#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 | 

댓글
댓글 쓰기