문제
16장의 카드에서 같은 색을 가진 카드 짝을 찾는 문제입니다 이를 해결하는 프로그램의 다음 실행상태에 대해 빈칸을 채우세요
프로그램의 실행순서 및 실행상태
1 public static void main( String[] args ) {
2 int card1 = -1, card2 = -1, card1Row = -1, card1Column = -1, card2Row = -1, card2Column = -1;
3 do {
첫번째 카드를 선택하세요: 11
12 card1Column = card1 % 10 - 1;
두번째 카드를 선택하세요: 24
13 card2Column = card2 % 10 - 1;
14 } while( ( 0 <= card1Row ) && ( card1Row < 4 ) && ( 0 <= card1Column ) && ( card1Column < 4 )
3 do {
4 if( ( card1 != card2 ) && ( color[card1Row][card1Column] == color[card2Row][card2Column] ) ) {
5 output[card2Row][card2Column] = color[card2Row][card2Column];
6 for( int row = 0; row < output.length; row++ ) {
7 for( int column = 0; column < output[0].length; column ++ ) {
8 if( ( output[row][column] <= 7 ) || ( output[row][column] == card1 ) || ( output[row][column] == card2 ) ) {
9 System.out.print( " \033[" + (row*3+2) + ";" + (column*4+1) + "f " );
■■
■■
■■
7 for( int column = 0; column < output[0].length; column ++ ) {
8 if( ( output[row][column] <= 7 ) || ( output[row][column] == card1 ) || ( output[row][column] == card2 ) ) {
10 else {
11 System.out.print( " \033[" + (row*3+2) + ";" + (column*4+1) + "f " + (row+1) + (column+1) + " " );
■■
■■ 12
■■
첫번째 카드를 선택하세요: 13
12 card1Column = card1 % 10 - 1;
두번째 카드를 선택하세요: 12
13 card2Column = card2 % 10 - 1;
14 } while( ( 0 <= card1Row ) && ( card1Row < 4 ) && ( 0 <= card1Column ) && ( card1Column < 4 )
3 do {
4 if( ( card1 != card2 ) && ( color[card1Row][card1Column] == color[card2Row][card2Column] ) ) {
6 for( int row = 0; row < output.length; row++ ) {
7 for( int column = 0; column < output[0].length; column ++ ) {
8 if( ( output[row][column] <= 7 ) || ( output[row][column] == card1 ) || ( output[row][column] == card2 ) ) {
9 System.out.print( " \033[" + (row*3+2) + ";" + (column*4+1) + "f " );
■■
■■
■■
7 for( int column = 0; column < output[0].length; column ++ ) {
8 if( ( output[row][column] <= 7 ) || ( output[row][column] == card1 ) || ( output[row][column] == card2 ) ) {
9 System.out.print( " \033[" + (row*3+2) + ";" + (column*4+1) + "f " );
■■■■
■■■■
■■■■
7 for( int column = 0; column < output[0].length; column ++ ) {
첫번째 카드를 선택하세요: 54
12 card1Column = card1 % 10 - 1;
두번째 카드를 선택하세요: 36
13 card2Column = card2 % 10 - 1;
14 } while( ( 0 <= card1Row ) && ( card1Row < 4 ) && ( 0 <= card1Column ) && ( card1Column < 4 )
15 }
프로그램 코드
import java.util.Scanner;
public class CardMatching
{
1 public static void main( String[] args ) {
Scanner scan = new Scanner( System.in );
int[][] output = { { 11, 12, 13, 14 },
{ 21, 22, 23, 24 },
{ 31, 32, 33, 34 },
{ 41, 42, 43, 44 } };
int[][] color = { { 0, 1, 2, 7 },
{ 3, 5, 6, 0 },
{ 2, 4, 6, 3 },
{ 4, 5, 1, 7 } };
2 int card1 = -1, card2 = -1, card1Row = -1, card1Column = -1, card2Row = -1, card2Column = -1;
3 do {
4 if( ( card1 != card2 ) && ( color[card1Row][card1Column] == color[card2Row][card2Column] ) ) {
output[card1Row][card1Column] = color[card1Row][card1Column];
5 output[card2Row][card2Column] = color[card2Row][card2Column];
}
6 for( int row = 0; row < output.length; row++ ) {
7 for( int column = 0; column < output[0].length; column ++ ) {
8 if( ( output[row][column] <= 7 ) || ( output[row][column] == card1 ) || ( output[row][column] == card2 ) ) {
System.out.print( " \033[4" + color[row][column] + "m" );
System.out.print( " \033[" + (row*3+1) + ";" + (column*4+1) + "f " );
9 System.out.print( " \033[" + (row*3+2) + ";" + (column*4+1) + "f " );
System.out.print( " \033[" + (row*3+3) + ";" + (column*4+1) + "f " );
System.out.print( " \033[0m" );
}
10 else {
System.out.print( " \033[" + (row*3+1) + ";" + (column*4+1) + "f " );
11 System.out.print( " \033[" + (row*3+2) + ";" + (column*4+1) + "f " + (row+1) + (column+1) + " " );
System.out.print( " \033[" + (row*3+3) + ";" + (column*4+1) + "f " );
}
}
}
System.out.print( " \033[15;1f \033[2K첫번째 카드를 선택하세요: " );
card1 = scan.nextInt();
card1Row = card1 / 10 - 1;
12 card1Column = card1 % 10 - 1;
System.out.print( " \033[16;1f \033[2K두번째 카드를 선택하세요: " );
card2 = scan.nextInt();
card2Row = card2 / 10 - 1;
13 card2Column = card2 % 10 - 1;
14 } while( ( 0 <= card1Row ) && ( card1Row < 4 ) && ( 0 <= card1Column ) && ( card1Column < 4 )
&& ( 0 <= card2Row ) && ( card2Row < 4 ) && ( 0 <= card2Column ) && ( card2Column < 4 ) );
scan.close();
15 }
}