게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
문제의 의도를 모르겠어요 ㅠㅠ
게시물ID : programmer_11851짧은주소 복사하기
작성자 : 베오베감이다
추천 : 0
조회수 : 400회
댓글수 : 5개
등록시간 : 2015/07/03 17:48:11
열혈강의책 도전프로그래밍 3 도전1번 풀고있습니다..
 
-문제
 
길이가 4x4인 2차원 배열을 선언하고, 모든 요소를 아래 그림의 왼쪽에 있는 형태와 동일하게 초기화 하자
그리고 배열의 요소들을 오른쪽 방향으로 90도씩 이동시켜서 그 결과를 출력하는 ㅍ로그램을 작성해 보자.
참고로 배열이 변경되는 형태는 다음과 같다.
 
1    2   3    4                13     9     5      1            16       15     14     13            4     8      12       16
5    6   7    8       ->      14     10    6      2    ->    12       11    10       9     ->    3      7      11       15
9   10  11  12                15     11   7      3             8         7       6     5              2     6      10       14
13  14  15  16                16    12   8       4              4       3       2      1             1     5        9       13
 
 
이런 문제인데요
 
제가 만든 소스는 이렇습니다
보기 쉽게 중요하다고 생각 되는 문장에 //★를 넣을게요  
 
 
 
#include <stdio.h>
int main(void)
{
 int arr2d[4][4]={ //배열 저장
  {1,2,3,4},
  {5,6,7,8},
  {9,10,11,12},
  {13,14,15,16}
 };
 
 int i,j;
 int temp;
 int r=0;
 
 /* 배열의 출력 */
 for(i=0;i<4;i++)
 {
  for(j=0;j<4;j++)
  {
   printf("%4d ",arr2d[i][j]);   // ★
  }
  printf("\n");
 }
 printf("\n");
 /* 배열의 회전1 */
 
 for(i=0;i<4;i++)
 {
  for(j=0;j<4;j++)
  {   
   temp=arr2d[3-j][i];     // ★  
   printf("%4d ", temp);
   
  }
  printf("\n");
 }
 printf("\n");
 /* 배열의 회전2 */
 for(i=0;i<4;i++)
 {
  for(j=0;j<4;j++)
  {
   temp=arr2d[3-i][3-j];   // ★
   printf("%4d ", temp);
  }
  printf("\n");
 }
 printf("\n");
 /* 배열의 회전3 */
 for(i=0;i<4;i++)
 {
  for(j=0;j<4;j++)
  {
   temp=arr2d[j][3-i];     // ★
   printf("%4d ", temp);
  }
  printf("\n");
 }
 return 0;
}
 
 
이런 식으로 저는 이 문제를 풀 때 배열자체를 그려 놓고 각 요소를 1) 앞과뒤를 바꾸고 2) 가로가3..가로가2..가로가1..가로가0.. 등등으로 계산해서 풀었습니다
 
근데 저런식으로 다 만들어 놓고 나니
 
실행결과는 문제와 동일한데
 
과연 내가 푼 방식을 의도한건지
 
아니면 배열A를 딱 하나만 만들어놓고
그 배열A 만 가지고 90도 돌리고
90도돌린 배열A를 가지고 또 90도 돌리고
합180도 돌린 배열A를 가지고 또 90 돌리는 식으로 풀라는건지
 
잘 모르겠네요 ㅠㅠ
 
 
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호