본문 바로가기
정리/C

[c] 이차원 배열 문제 풀이

by 멘멘 2023. 7. 23.

#codeup 1460

#include <stdio.h>

int main(){
    
    int arr[101][101] = {}; //n*n 사이즈의 배열을 미리 생성
    
    int num;
    scanf("%d", &num);
    int x = 1;
    int i = 0, j = 0;
    for(i = 1; i <=num; i++){ #이중반복문을 통해 값을 배열에 넣어줌
        for(j = 1; j<= num; j++){
            arr[i][j] = x;
            x++;
        }
    }
    
    for(i = 1; i <=num; i++){ #이중반복문을 통한 출력
        for(j = 1; j<= num; j++){
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}

 

#codeup 1468

#include <stdio.h>

int main(){
    
    int arr[101][101]={}; //n*n만큼 배열의 크기 지정 
    int n;
    scanf("%d", &n);
    int x = 1;
    int i = 0, j = 0;
    for(i = 1; i <= n; i++){
        if(i%2 == 1){ //홀수번째 줄에는 숫자가 증가하며 값이 들어가고
            for(int j = 1; j<=n; j++){
                arr[i][j] = x;
                x++;
            }
        }
        else if(i%2==0){ //짝수번째 줄에는 숫자를 역순으로 값을 넣는다
            for(j = n; j>=1; j--){
                arr[i][j] = x;
                x++;
            }
        }
    }
 
    for(i = 1; i <= n; i++){ // 입력된 값을 출력한다
        for(j = 1; j <= n ; j++){
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

 

#codeup 1480

 

#include <stdio.h>

int main(){
    
    int arr[101][101] = {}; //n*m만큼의 배열
    
    int n,m;
    scanf("%d %d", &n,&m);
    
    int x = 1;
    int i = n, j = m; 
    int tj=j;
    int ti=i;
    int k = 0;
    //좌표를 기준으로 값을 출력
    //(1,1)부터 (n,m)까지
    //(i,j)의 대각선은 (i-1,j-1),(i+1,j+1)
    for(k = 1; k<n*m; k++){ 
    	if( ( i >= 1 && i <= n) && ( j >= 1 && j <= m) ){ 
        	arr[i][j] = x;
        	x++;
        	i++;
        	j--;
    	if( !(( i >= 1 && i <= n) && ( j >= 1 && j <= m)) ){ 
            ti--;
            if(ti <=0){ 
                ti = 1;
                tj--;
           }
            i = ti;
            j = tj;
        }
    }
}
    
    
    for(i = 1; i <= n; i++){ //최종 완성본 출력
        for(j = 1; j <= m ; j++){
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}

 

codeup 1484

#include <stdio.h>

int main(){

	int a, b;
    int arr[101][101] = {0,}; //마찬가지로 배열 생성
    int i =0, j =0, k =0;
    int f;
    
    scanf("%d %d",&a,&b); //값입력 받기
    for(k=1; k<a*b; k++){
    	arr[i][j] = k;
        
        if(f==1){ //순방향으로 가는 경우
        	j++;
            if(i == b|| arr[i][j]!=0)
            {
            	f = 2;
            	j--;
            	i++;
            	continue;
            }
        }
        else if(f==2){ //세로로 진행하는 경우
        	i++;
            if(i == a || arr[i][j]!=0)
            {
            	f = 3;
            	i--;
            	j--;
            	continue;
            }
        
        }
        else if(f==3){ //역순으로 진행하는 경우
        
        	j--;
            if(i <0|| arr[i][j]!=0)
            {
            	f = 2;
            	j++;
            	i--;
            	continue;
            }
        
        }
        else if(f==4){ //세로 역순으로 진행하는 경우
        	i--;
            if(i <0|| arr[i][j]!=0)
            {
            	f = 1;
            	j++;
            	i++;
            	continue;
            }
        
        }

	for( i = 0; i<a;i++){ //출력
		for(j =0; j<b; j++){
    		printf("%d ",arr[i][j]);
    	}
    	printf("\n");
	}
	return 0;

}

'정리 > C' 카테고리의 다른 글

[c] 구조체 관련 문제 풀이  (0) 2023.08.27
[C] 구조체  (0) 2023.07.30
[c] 포인터 문제 풀이  (0) 2023.07.09
[c] 연결 리스트  (0) 2023.05.28
[c] 연결 리스트  (0) 2023.05.14

댓글