1018번 - 체스판 다시 칠하기
using System;
using System.Text;
public class main_class
{
public static void Main(string[] args)
string[] str = Console.ReadLine().Split(' ');
int m = Convert.ToInt32(str[0]);
int n = Convert.ToInt32(str[1]);
int[][] array = new int[m][];
for (int i = 0; i < m; i++)
array[i] = new int[n];
for (int k = 0; k < n; k++)
array[i][k] = Console.Read() == 'B' ? 0 : 1;
}
Console.Read(); //여기
int a = 32;
for (int i = 0; i < m - 7; i++)
for (int k = 0; k < n - 7; k++)
int A = 0;
for (int I = 0; I < 8; I++)
for (int K = 0; K < 8; K++)
A += array[i + I][k + K] == (I + K) % 2 ? 1 : 0;
A = A <= 32 ? A : 64 - A;
a = A < a ? A : a;
Console.WriteLine(a);
위 코드에서 주석처리 //여기 부분(Console.Read())이 왜 필요한지 알고 싶습니다.
그리고 왜 32를 기준으로 비교하는지 알고 싶습니다.
8X8크기에서 고치려는 체스판의 위치 개수 값이 최대로 갖을 수 있는 수는 판 전체를 같은 색으로 색칠했을 때 이므로 32를 기준으로 합니다.
댓글을 작성하려면 로그인해야 합니다.
belgabelga 3년 전
using System;
using System.Text;
public class main_class
{
public static void Main(string[] args)
{
string[] str = Console.ReadLine().Split(' ');
int m = Convert.ToInt32(str[0]);
int n = Convert.ToInt32(str[1]);
int[][] array = new int[m][];
for (int i = 0; i < m; i++)
{
array[i] = new int[n];
for (int k = 0; k < n; k++)
{
array[i][k] = Console.Read() == 'B' ? 0 : 1;
}
Console.Read(); //여기
}
int a = 32;
for (int i = 0; i < m - 7; i++)
{
for (int k = 0; k < n - 7; k++)
{
int A = 0;
for (int I = 0; I < 8; I++)
{
for (int K = 0; K < 8; K++)
{
A += array[i + I][k + K] == (I + K) % 2 ? 1 : 0;
}
}
A = A <= 32 ? A : 64 - A;
a = A < a ? A : a;
}
}
Console.WriteLine(a);
}
}
위 코드에서 주석처리 //여기 부분(Console.Read())이 왜 필요한지 알고 싶습니다.
그리고 왜 32를 기준으로 비교하는지 알고 싶습니다.