이 문제는 아주 평범한 배낭에 관한 문제이다.

한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다.

준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 알려주자.

입력

첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000)가 주어진다.

입력으로 주어지는 모든 수는 정수이다.

출력

한 줄에 배낭에 넣을 수 있는 물건들의 가치합의 최댓값을 출력한다.

예제 입력 1

4 7
6 13
4 8
3 6
5 12

예제 출력 1

14

더보기

Solution

#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>

int main(void)
{
	int N, K, *W=NULL, *V=NULL, *put=NULL, max=0;
	bool **used=NULL;

	scanf("%d%d", &N, &K);
	W=(int *)malloc(N*sizeof(int));
	V=(int *)malloc(N*sizeof(int));
	put=(int *)calloc(K+1,sizeof(int));
	used=(bool **)malloc((K+1)*sizeof(bool *));
	for(int k=0;k<=K;k++)
		used[k]=(bool *)calloc(N,sizeof(bool));

	for(int n=0;n<N;n++)
		scanf("%d%d", &W[n], &V[n]);

	for(int i=0;i<N;i++)
		for(int j=i+1;j<N;j++)
			if(W[i]>W[j] || W[i]==W[j]&&V[i]<V[j])
			{
				int temp=W[i];
				W[i]=W[j];
				W[j]=temp;
				temp=V[i];
				V[i]=V[j];
				V[j]=temp;
			}

	for(int i=W[0];i<=K;i++)
	{
		for(int j=0;j<N&&i-W[j]>=0;j++)
			if(put[i-W[j]]+V[j]>put[i] && !used[i-W[j]][j])
			{
				for(int k=0;k<N;k++)
					used[i][k]=used[i-W[j]][k];
				used[i][j]=true;
				put[i]=put[i-W[j]]+V[j];
			}
		max=put[i]>max?put[i]:max;
	}

	printf("%d\n", max);
	free(put);
	for(int k=0;k<=K;k++)
		free(used[k]);
	free(used);
	free(V);
	free(W);
	return 0;
}
728x90

정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다.

  • 2를 곱한다.
  • 1을 수의 가장 오른쪽에 추가한다. 

A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자.

입력

첫째 줄에 A, B (1 ≤ A < B ≤ 10^9)가 주어진다.

출력

A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다.

예제 입력 1

2 162

예제 출력 1

5

2 → 4 → 8 → 81 → 162

예제 입력 2

4 42

예제 출력 2

-1

예제 입력 3

100 40021

예제 출력 3

5

100 → 200 → 2001 → 4002 → 40021


더보기

Solution

#include<stdio.h>

int main(void)
{
	int A, B, count=0;

	scanf("%d%d", &A, &B);

	while(A<B)
	{
		if(B%2==0)
			B/=2;
		else if(B%10==1)
			B/=10;
		else
			break;
		count++;
	}

	printf("%d\n", A==B?count+1:-1);
	return 0;
}
728x90

크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다.

예를 들어, A = [3, 5, 2, 7]인 경우 NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1이다. A = [9, 5, 4, 8]인 경우에는 NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1이다.

입력

첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.

출력

총 N개의 수 NGE(1), NGE(2), ..., NGE(N)을 공백으로 구분해 출력한다.

예제 입력 1

4
3 5 2 7

예제 출력 1

5 7 7 -1

예제 입력 2

4
9 5 4 8

예제 출력 2

-1 8 8 -1

더보기

Solution

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	int N, *A=NULL, *NGE=NULL, *stack=NULL, current=0;

	scanf("%d", &N);
	A=(int *)malloc(N*sizeof(int));
	NGE=(int *)calloc(N,sizeof(int));
	stack=(int *)malloc(N*sizeof(int));

	for(int n=0;n<N;n++)
	{
		scanf("%d", &A[n]);

		while(current>0)
			if(A[stack[current-1]]<A[n])
				NGE[stack[--current]]=A[n];
			else
				break;

		stack[current++]=n;
	}

	for(int n=0;n<N;n++)
		printf("%d ", NGE[n]==0?-1:NGE[n]);
	printf("\n");
	free(NGE);
	free(stack);
	free(A);
	return 0;
}
728x90

N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.

  • N개의 자연수 중에서 M개를 고른 수열
  • 같은 수를 여러 번 골라도 된다.

입력

첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 7)

둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다.

출력

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.

수열은 사전 순으로 증가하는 순서로 출력해야 한다.

예제 입력 1

3 1
4 4 2

예제 출력 1

2
4

예제 입력 2

4 2
9 7 9 1

예제 출력 2

1 1
1 7
1 9
7 1
7 7
7 9
9 1
9 7
9 9

예제 입력 3

4 4
1 1 2 2

예제 출력 3

1 1 1 1
1 1 1 2
1 1 2 1
1 1 2 2
1 2 1 1
1 2 1 2
1 2 2 1
1 2 2 2
2 1 1 1
2 1 1 2
2 1 2 1
2 1 2 2
2 2 1 1
2 2 1 2
2 2 2 1
2 2 2 2

더보기

Solution

#include<stdio.h>
#include<stdlib.h>

int *A=NULL, *B=NULL, N, M;

void N_M(int m)
{
	if(m==M)
	{
		for(int i=0;i<M;i++)
			printf("%d ", B[i]);
		printf("\n");
		return;
	}

	for(int i=0;i<N;i++)
	{
		B[m]=A[i];
		N_M(m+1);
	}
}

int main(void)
{
	scanf("%d%d", &N, &M);

	A=(int *)malloc(N*sizeof(int));
	B=(int *)malloc(M*sizeof(int));

	for(int n=0;n<N;n++)
		scanf("%d", &A[n]);

	for(int i=0;i<N;i++)
		for(int j=i+1;j<N;j++)
			if(A[i]>A[j])
			{
				A[i]+=A[j];
				A[j]=A[i]-A[j];
				A[i]-=A[j];
			}

	int count=0;
	for(int n=0;n<N-1;n++)
		if(A[n]==A[n+1])
		{
			A[n]=10001;
			count++;
		}

	for(int i=0;i<N;i++)
		for(int j=i+1;j<N;j++)
			if(A[i]>A[j])
			{
				A[i]+=A[j];
				A[j]=A[i]-A[j];
				A[i]-=A[j];
			}
	N-=count;
	N_M(0);

	free(A);
	free(B);
	return 0;
}
728x90

N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.

  • N개의 자연수 중에서 M개를 고른 수열

입력

첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)

둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다.

출력

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.

수열은 사전 순으로 증가하는 순서로 출력해야 한다.

예제 입력 1

3 1
4 4 2

예제 출력 1

2
4

예제 입력 2

4 2
9 7 9 1

예제 출력 2

1 7
1 9
7 1
7 9
9 1
9 7
9 9

예제 입력 3

4 4
1 1 1 1

예제 출력 3

1 1 1 1

더보기

Solution

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

int *A=NULL, *B=NULL, N, M, history[40320][8], count=0;

void N_M(int m,bool *used)
{
	if(m==M)
	{
		bool same=true;

		for(int i=0;i<count;i++)
		{
			bool same=true;

			for(int j=0;j<M;j++)
				if(B[j]!=history[i][j])
				{
					same=false;
					break;
				}
			if(same)
				return;
		}

		for(int i=0;i<M;i++)
			history[count][i]=B[i];
		count++;
		return;
	}

	for(int i=0;i<N;i++)
		if(!used[i])
		{
			B[m]=A[i];
			used[i]=true;
			N_M(m+1,used);
			used[i]=false;
		}
}

int main(void)
{
	scanf("%d%d", &N, &M);

	A=(int *)malloc(N*sizeof(int));
	B=(int *)malloc(M*sizeof(int));
	bool *used=(bool *)calloc(M,sizeof(bool));

	for(int n=0;n<N;n++)
		scanf("%d", &A[n]);

	for(int i=0;i<N;i++)
		for(int j=i+1;j<N;j++)
			if(A[i]>A[j])
			{
				A[i]+=A[j];
				A[j]=A[i]-A[j];
				A[i]-=A[j];
			}

	N_M(0,used);

	for(int i=0;i<count;i++)
		for(int j=i+1;j<count;j++)
			for(int k=0;k<M;k++)
				if(history[i][k]>history[j][k])
					for(int l=0;l<M;l++)
					{
						history[i][k]+=history[j][k];
						history[j][k]=history[i][k]-history[j][k];
						history[i][k]-=history[j][k];
					}
				else if(history[i][k]<history[j][k])
					break;

	for(int i=0;i<count;i++)
	{
		for(int j=0;j<M;j++)
			printf("%d ", history[i][j]);
		printf("\n");
	}
	free(A);
	free(B);
	free(used);
	return 0;
}
728x90

N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.

  • N개의 자연수 중에서 M개를 고른 수열
  • 고른 수열은 비내림차순이어야 한다.
    • 길이가 K인 수열 A가 A(1) ≤ A(2) ≤ ... ≤ A(K-1) ≤ A(K)를 만족하면, 비내림차순이라고 한다.

입력

첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)

둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다.

출력

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.

수열은 사전 순으로 증가하는 순서로 출력해야 한다.

예제 입력 1

3 1
4 4 2

예제 출력 1

2
4

예제 입력 2

4 2
9 7 9 1

예제 출력 2

1 7
1 9
7 9
9 9

예제 입력 3

4 4
1 1 2 2

예제 출력 3

1 1 2 2

더보기

Solution

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

int *A=NULL, *B=NULL, N, M, history[40320][8], count=0;

void N_M(int n,int m)
{
	if(m==M)
	{
		bool same=true;

		for(int i=0;i<count;i++)
		{
			bool same=true;

			for(int j=0;j<M;j++)
				if(B[j]!=history[i][j])
				{
					same=false;
					break;
				}
			if(same)
				return;
		}

		for(int i=0;i<M;i++)
		{
			history[count][i]=B[i];
			printf("%d ", B[i]);
		}
		count++;
		printf("\n");
		return;
	}

	if(n>=N)
		return;

	for(int i=n;i<N;i++)
	{
		B[m]=A[i];
		N_M(i+1,m+1);
	}
}

int main(void)
{
	scanf("%d%d", &N, &M);

	A=(int *)malloc(N*sizeof(int));
	B=(int *)malloc(M*sizeof(int));

	for(int n=0;n<N;n++)
		scanf("%d", &A[n]);

	for(int i=0;i<N;i++)
		for(int j=i+1;j<N;j++)
			if(A[i]>A[j])
			{
				A[i]+=A[j];
				A[j]=A[i]-A[j];
				A[i]-=A[j];
			}

	N_M(0,0);

	free(A);
	free(B);
	return 0;
}
728x90

N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.

  • N개의 자연수 중에서 M개를 고른 수열
  • 같은 수를 여러 번 골라도 된다.
  • 고른 수열은 비내림차순이어야 한다.
    • 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다.

입력

첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)

둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다.

출력

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.

수열은 사전 순으로 증가하는 순서로 출력해야 한다.

예제 입력 1

3 1
4 4 2

예제 출력 1

2
4

예제 입력 2

4 2
9 7 9 1

예제 출력 2

1 1
1 7
1 9
7 7
7 9
9 9

예제 입력 3

4 4
1 1 2 2

예제 출력 3

1 1 1 1
1 1 1 2
1 1 2 2
1 2 2 2
2 2 2 2

더보기

Solution

#include<stdio.h>
#include<stdlib.h>

int *A=NULL, *B=NULL, N, M;

void N_M(int n,int m)
{
	if(m==M)
	{
		for(int i=0;i<M;i++)
			printf("%d ", B[i]);
		printf("\n");
		return;
	}

	for(int i=n;i<N;i++)
	{
		B[m]=A[i];
		N_M(i,m+1);
	}
}

int main(void)
{
	scanf("%d%d", &N, &M);

	A=(int *)malloc(N*sizeof(int));
	B=(int *)malloc(M*sizeof(int));

	for(int n=0;n<N;n++)
		scanf("%d", &A[n]);

	int count=0;
	for(int i=0;i<N;i++)
		for(int j=i+1;j<N;j++)
			if(A[i]>A[j])
			{
				A[i]+=A[j];
				A[j]=A[i]-A[j];
				A[i]-=A[j];
			}

	for(int n=0;n<N-1;n++)
		if(A[n]==A[n+1])
		{
			A[n]=10001;
			count++;
		}

	for(int i=0;i<N;i++)
		for(int j=i+1;j<N;j++)
			if(A[i]>A[j])
			{
				A[i]+=A[j];
				A[j]=A[i]-A[j];
				A[i]-=A[j];
			}
	N-=count;

	N_M(0,0);

	free(A);
	free(B);
	return 0;
}
728x90

n×m 크기의 체스 판과, 상대팀의 Queen, Knight, Pawn의 위치가 주어져 있을 때, 안전한 칸이 몇 칸인지 세는 프로그램을 작성하시오. (안전한 칸이란 말은 그 곳에 자신의 말이 있어도 잡힐 가능성이 없다는 것이다.)

참고로 Queen은 가로, 세로, 대각선으로 갈 수 있는 만큼 최대한 많이 이동을 할 수 있는데 만약 그 중간에 장애물이 있다면 이동을 할 수 없다. 그리고 Knight는 2×3 직사각형을 그렸을 때, 반대쪽 꼭짓점으로 이동을 할 수 있다. 아래 그림과 같은 8칸이 이에 해당한다.

이때 Knight는 중간에 장애물이 있더라도 이동을 할 수 있다. 그리고 Pawn은 상대팀의 말은 잡을 수 없다고 하자(즉, 장애물의 역할만 한다는 것이다).

예를 들어 다음과 같이 말이 배치가 되어 있다면 진하게 표시된 부분이 안전한 칸이 될 것이다. (K : Knight, Q : Queen, P : Pawn)

입력

첫째 줄에는 체스 판의 크기 n과 m이 주어진다. (1 ≤ n, m ≤ 1000) 그리고 둘째 줄에는 Queen의 개수와 그 개수만큼의 Queen의 위치가 입력된다. 그리고 마찬가지로 셋째 줄에는 Knight의 개수와 위치, 넷째 줄에는 Pawn의 개수와 위치가 입력된다. 즉 둘째 줄, 셋째 줄, 넷째 줄은  k, r(1), c(1), r(2), c(2), ..., r(k), c(k) 이 빈 칸을 사이에 두고 주어진다는 것이다. 여기서 r(i)는 i번째 말의 행 위치, c(i)는 i번째 말의 열 위치를 의미한다. 한 칸에는 하나의 말만 놓인다고 가정한다. Knight, Queen, Pawn의 개수는 각각 100을 넘지 않는 음이 아닌 정수이다.

출력

첫째 줄에 n×m 체스판에 안전한 칸이 몇 칸인지 출력하시오.

예제 입력 1

4 4
2 1 4 2 4
1 1 2
1 2 3

예제 출력 1

6

예제 입력 2

2 3
1 1 2
1 1 1
0

예제 출력 2

0

더보기

Solution

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	int n, m, **chess=NULL, queen_move[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}}, knight_move[8][2]={{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}}, count, r, c;

	scanf("%d%d", &n, &m);
	chess=(int **)malloc(n*sizeof(int *));
	for(int i=0;i<n;i++)
		chess[i]=(int *)calloc(m,sizeof(int));

	scanf("%d", &count);
	for(int queen=0;queen<count;queen++)
	{
		scanf("%d%d", &r, &c);
		chess[r-1][c-1]=1;
	}

	scanf("%d", &count);
	for(int knight=0;knight<count;knight++)
	{
		scanf("%d%d", &r, &c);
		chess[r-1][c-1]=2;
	}

	scanf("%d", &count);
	for(int pawn=0;pawn<count;pawn++)
	{
		scanf("%d%d", &r, &c);
		chess[r-1][c-1]=3;
	}

	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			if(chess[i][j]==1)
				for(int k=0;k<8;k++)
				{
					int l=1;

					while(i+l*queen_move[k][0]>=0 && i+l*queen_move[k][0]<n && j+l*queen_move[k][1]>=0 && j+l*queen_move[k][1]<m)
					{
						if(chess[i+l*queen_move[k][0]][j+l*queen_move[k][1]]==0 || chess[i+l*queen_move[k][0]][j+l*queen_move[k][1]]==-1)
							chess[i+l*queen_move[k][0]][j+l*queen_move[k][1]]=-1;
						else
							break;
						l++;
					}
				}
			else if(chess[i][j]==2)
				for(int k=0;k<8;k++)
					if(i+knight_move[k][0]>=0 && i+knight_move[k][0]<n && j+knight_move[k][1]>=0 && j+knight_move[k][1]<m)
						if(chess[i+knight_move[k][0]][j+knight_move[k][1]]==0)
							chess[i+knight_move[k][0]][j+knight_move[k][1]]=-1;

	count=0;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
			count+=chess[i][j]==0;
		free(chess[i]);
	}
	free(chess);
	printf("%d\n", count);
	return 0;
}
더보기

Solution

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		int count, r, c, queen_move[][]= new int[][] {{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}}, knight_move[][]=new int[][] {{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}};
		st=new StringTokenizer(br.readLine());
		int n=Integer.parseInt(st.nextToken());
		int m=Integer.parseInt(st.nextToken());
		int[][] chess=new int[n][m];
		
		st=new StringTokenizer(br.readLine());
		count=Integer.parseInt(st.nextToken());
		for(int queen=0;queen<count;queen++) {
			r=Integer.parseInt(st.nextToken());
			c=Integer.parseInt(st.nextToken());
			chess[r-1][c-1]=1;
		}
		
		st=new StringTokenizer(br.readLine());
		count=Integer.parseInt(st.nextToken());
		for(int knight=0;knight<count;knight++) {
			r=Integer.parseInt(st.nextToken());
			c=Integer.parseInt(st.nextToken());
			chess[r-1][c-1]=2;
		}

		st=new StringTokenizer(br.readLine());
		count=Integer.parseInt(st.nextToken());
		for(int pawn=0;pawn<count;pawn++) {
			r=Integer.parseInt(st.nextToken());
			c=Integer.parseInt(st.nextToken());
			chess[r-1][c-1]=3;
		}

		for(int i=0;i<n;i++)
			for(int j=0;j<m;j++)
				if(chess[i][j]==1)
					for(int k=0;k<8;k++) {
						int l=1;
						
						while(i+l*queen_move[k][0]>=0 && i+l*queen_move[k][0]<n && j+l*queen_move[k][1]>=0 && j+l*queen_move[k][1]<m)
						{
							if(chess[i+l*queen_move[k][0]][j+l*queen_move[k][1]]==0 || chess[i+l*queen_move[k][0]][j+l*queen_move[k][1]]==-1)
								chess[i+l*queen_move[k][0]][j+l*queen_move[k][1]]=-1;
							else
								break;
							l++;
						}
					}
				else if(chess[i][j]==2)
					for(int k=0;k<8;k++)
						if(i+knight_move[k][0]>=0 && i+knight_move[k][0]<n && j+knight_move[k][1]>=0 && j+knight_move[k][1]<m)
							if(chess[i+knight_move[k][0]][j+knight_move[k][1]]==0)
								chess[i+knight_move[k][0]][j+knight_move[k][1]]=-1;

		count=0;
		for(int i=0;i<n;i++)
			for(int j=0;j<m;j++)
				if(chess[i][j]==0)
					count++;
		
		System.out.println(count);
	}
}

 

728x90

+ Recent posts