티스토리 뷰

1402. 2차원 배열 순서대로 채우기 1-1

데이터 n개가 입력되면, 입력의 역 순으로 출력하는 프로그램을 작성하자.

첫째 줄에 데이터의 개수 n이 입력되고, 둘째 줄에는 공백을 기준으로 n개의 데이터가 입력된다.다음과 같은 n*n 배열 구조를 출력해보자. 입력이 3인 경우 다음과 같이 출력한다.


1 2 3
4 5 6
7 8 9

 

배열 사용하기
#include <stdio.h>

int main(void){
  int n;
  scanf("%d", &n);
  int arr[n][n];
  int num=1;


  //2차원 배열 초기화
  for(int i=0; i<n; i++){
    for(int j=0; j<n; j++){
      arr[i][j]=num;
      num++;
    }
  }

  //2차원 배열 출력
  for(int i=0; i<n; i++){
    for(int j=0; j<n; j++){
      printf("%d ", arr[i][j]);
    }
    printf("\n");
  }   

}

 

포인터 배열 사용하기
#include <stdio.h>

int main(void){
  int n;
  scanf("%d", &n);
  int arr[n][n];
  int * pa[n];
  int num=1;

  //포인터 배열 초기화
  for(int i=0; i<n; i++){
    pa[i] = arr[i];
  }

  //2차원 배열 초기화
  for(int i=0; i<n; i++){
    for(int j=0; j<n; j++){
      pa[i][j]=num;
      num++;
    }
  }

  //2차원 배열 출력
  for(int i=0; i<n; i++){
    for(int j=0; j<n; j++){
      printf("%d ", pa[i][j]);
    }
    printf("\n");
  }   
    
}

 

1409. 테두리의 합

정수 N을 입력받아 1~N*N까지 2차원 배열에 저장한 후 사각 테두리에 있는 배열값들만 합하여 출력하시오.

예를 들어 3을 입력한다면 아래와 같이 배열을 초기화한다.

 

1 2 3

4 5 6

7 8 9

 

그리고 테두리의 값인 1+2+3+6+9+8+7+4 = 40을 출력하는 프로그램을 작성하시오.

 

 

배열 사용하기
#include <stdio.h>

int main(void){
  int n;
  scanf("%d", &n);
  int arr[n][n];
  int num=1;


  //2차원 배열 초기화
  for(int i=0; i<n; i++){
    for(int j=0; j<n; j++){
      arr[i][j]=num;
      num++;
    }
  }

  //테두리 합 구하기
  int sum=0;
  for(int i=0; i<n; i++){
    for(int j=0; j<n; j++){
        if(i!=0 && i!=n-1){
            sum+=arr[i][0]+arr[i][n-1];
            break;
        }
        sum+=arr[i][j];
    }
  }  
  
  //결과 출력
  printf("%d\n",sum);
}

 

포인터 배열 사용하기
#include <stdio.h>

int main(void){
  int n;
  scanf("%d", &n);
  int arr[n][n];
  int num=1;
  int *pa[n];

  //포인터 배열 초기화
  for(int i=0; i<n; i++){
    pa[i] = arr[i];
  }

  //2차원 배열 초기화
  for(int i=0; i<n; i++){
    for(int j=0; j<n; j++){
      pa[i][j]=num;
      num++;
    }
  }

  //테두리 합 구하기
  int sum=0;
  for(int i=0; i<n; i++){
    for(int j=0; j<n; j++){
        if(i!=0 && i!=n-1){
            sum+=pa[i][0]+pa[i][n-1];
            break;
        }
        sum+=pa[i][j];
    }
  }
  
  //결과 출력
  printf("%d\n",sum);
}

 

 

 

 

댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday