[#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 |
댓글
댓글 쓰기