코딩 공부/C#-코딩테스트

(백준/C#) 2차원 배열

공부를 함 2024. 9. 30. 19:03

//2738

N*M크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더하는 프로그램을 작성하시오.

int[] xy = Array.ConvertAll(Console.ReadLine().Split(), i => int.Parse(i));
int x = xy[0];
int y = xy[1];

int[,] matrixA = new int[x, y] ;
int[,] matrixB = new int [x, y];

for (int k = 0; k < x; k++)
{
    string[] input = Console.ReadLine().Split();
    for (int l = 0; l<y; l++)
        matrixA[k, l] = int.Parse(input[l]);
}
for (int k = 0; k < x; k++)
{
    string[] input = Console.ReadLine().Split();
    for (int l = 0; l < y; l++)
        matrixB[k, l] = int.Parse(input[l]);
}

for (int i = 0; i < x; i++)
{
    for (int j = 0; j < y; j++)
        Console.Write(matrixA[i, j] + matrixB[i, j] + " ");
    Console.WriteLine();
}
int[] F() => Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
int[] nm = F();
int[][] n = new int[nm[0]][];
for (int i = 0; i < nm[0]; i++)
    n[i] = F();
for (int i = 0; i < nm[0]; i++)
{
    int[] temp = F();
    for (int j = 0; j < temp.Length; j++)
        n [i][j] += temp[j];
}
foreach (var item in n)
    Console.WriteLine(string.Join(' ', item));

 

 

//2566

9×9 격자판에 쓰여진 81개의 자연수 또는 0이 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오.

int[][] matrix = new int[9][];
int[] M() => Array.ConvertAll(Console.ReadLine().Split(), int.Parse);

int max = 0, n = 0, m = 0;

for (int k = 0; k < matrix.Length; k++)
    matrix[k] = M();

for (int i = 0; i < matrix.Length; i++)
    for (int j = 0; j < matrix[i].Length; j++)
        if (matrix[i][j] > max)
        {
            max = matrix[i][j];
            n = i;
            m = j;
        }

Console.WriteLine(max);
Console.WriteLine($"{n+1} {m+1}");
List<int> list = new List<int>();
for (int i = 0; i < 9; i++)
    list.AddRange(Array.ConvertAll(Console.ReadLine().Split(), int.Parse));
int m = list.IndexOf(list.Max());
Console.WriteLine($"{list.Max()}\n{m / 9 + 1} {m % 9 + 1}");

 

 

//10798
이 장난감에 있는 글자들은 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’부터 ‘9’이다. 영석이는 칠판에 글자들을 수평으로 일렬로 붙여서 단어를 만든다.

한 줄의 단어는 글자들을 빈칸 없이 연속으로 나열해서 최대 15개의 글자들로 이루어진다. 또한 만들어진 다섯 개의 단어들의 글자 개수는 서로 다를 수 있다. 

칠판에 붙여진 단어들이 주어질 때, 영석이가 세로로 읽은 순서대로 글자들을 출력하는 프로그램을 작성하시오.

string[] input = new string[5];
for (int i = 0; i < input.Length; i++)
{
    input[i] = Console.ReadLine();
}
for (int j = 0; j < 15;j++)
{
    for (int k = 0; k < input.Length; k++)
    {
        if (input[k].Length > j)
            Console.Write(input[k][j]);
    }
}

 

 

//2563

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오.

int answer = 0;
int[,] ints = new int[100, 100];
int n = int.Parse(Console.ReadLine());
for (int i = 0; i < n; i++)
{
    int[] temp = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
    for (int j = 0; j < 100; j++)
        ints[temp[0] + (j % 10), temp[1] + (j / 10)] = 1;
}
foreach (var item in ints)
    answer += item;
Console.WriteLine(answer);

'코딩 공부 > C#-코딩테스트' 카테고리의 다른 글

(백준/C#) 약수, 배수와 소수  (0) 2024.10.04
(백준/C#) 일반 수학 1  (0) 2024.09.24
(백준/C#) 심화 1  (0) 2024.09.23
(백준/C#) 문자열  (0) 2024.09.09
(백준/C#) 1차원 배열  (0) 2024.08.19