코딩해요/C

[백준/C언어] 2차원 배열 문제풀이

yenas0 2023. 8. 28. 20:42
반응형

 

 

 

 

#2738번 : 행렬 덧셈

 

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
 
int main(void)
{
    int A[100][100];
    int B[100][100];
 
    int N, M;
 
    scanf("%d %d"&N, &M);
 
    for (int i = 0; i < N; i++)
    {
        for (int k = 0; k < M; k++)
        {
            scanf("%d"&A[i][k]);
        }
    }
 
    for (int i = 0; i < N; i++)
    {
        for (int k = 0; k < M; k++)
        {
            scanf("%d"&B[i][k]);
        }
    }
 
    for (int i = 0; i < N; i++)
    {
        for (int k = 0; k < M; k++)
        {
            printf("%d ", A[i][k] + B[i][k]);
        }
        printf("\n");
    }
}
 
cs

 

배열 2개를 받아서 출력했다..

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#2566번: 최댓값

 

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
 
int main(void)
{
    int A[9][9];
 
    for (int i = 0; i < 9; i++)
    {
        for (int k = 0; k < 9; k++)
        {
            scanf("%d"&A[i][k]);
        }
    }
 
    int max = A[0][0];
    int max_l = 0;
    int max_r = 0;
 
    for (int i = 0; i < 9; i++)
    {
        for (int k = 0; k < 9; k++)
        {
            if (max < A[i][k])
                {
                    max = A[i][k];
                    max_l = i;
                    max_r = k;
 
                }
        }
    }
 
    printf("%d\n", max);
    printf("%d %d", max_l+1, max_r+1);
 
}
 
cs

 

가장 큰 수를 A[0][0]으로 가정한 다음에 if문이랑 for문을 사용해서 가장 큰 값을 찾고 그때의 행열값도 변수를 사용해서 구한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#10798번: 세로읽기

 

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
 
char S[5][15];
 
int main(void)
{
 
    for (int i = 0; i < 5; i++)
    {
        scanf("%s", S[i]);
    }
 
    for (int i = 0; i < 15; i++)
    {
        for (int k = 0; k < 5; k++)
        {
            if (S[k][i] != NULL)
                printf("%c", S[k][i]);
        }
    }
 
    return 0;
}
 
cs

 

char 배열을 main함수안에 넣어서 하니까 계속 틀려서 검색해보니 배열을 전역배열로 바꿔야된다고 한다. 1학기 때 사용했던 교재 보니까 전역변수를 값을 지정하지 않았을 때 NULL값이 들어가지만 지역변수는 쓰레기값이 대입되어서 if문이 제대로 기능하지 않았던 것 같다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#2563번: 색종이

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
 
int main(void)
{
    int S[100][100= { 0 };
 
    int N;
    int p, q;
    int count = 0;
 
    scanf("%d"&N);
 
    for (int i = 0; i < N; i++)
    {
        scanf("%d %d"&p, &q);
        for (int k = 0; k < 10; k++)
        {
            for (int j = 0; j < 10; j++)
                S[p + k][q + j] = 1;
        }
    }
 
    for (int i = 0; i < 100; i++)
    {
        for (int k = 0; k < 100; k++)
        {
            if (S[i][k] == 1)
                count++;
        }
    }
    
    printf("%d", count);
}
 
cs

 

이 문제는 값이 0인 100*100짜리 판이 있다고 생각하고 색종이가 놓여지는 부분을 1로 바꿔서 마지막에 1인 부분의 개수를 세는 방식으로 구현하면된다.

 

반응형