문제
16장의 카드에서 같은 색을 가진 카드 짝을 찾는 문제입니다 이를 해결하는 다음 프로그램의 실행순서를 클릭하세요
11 12 13 14
21 22 23 24
31 32 33 34
41 42 43 44
첫 번째 카드를 선택하세요: 11
두 번째 카드를 선택하세요: 24
12 13 14
21 22 23
31 32 33 34
41 42 43 44
첫 번째 카드를 선택하세요: 13
두 번째 카드를 선택하세요: 12
14
21 22 23
31 32 33 34
41 42 43 44
첫 번째 카드를 선택하세요: 54
두 번째 카드를 선택하세요: 36
프로그램 코드
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++ ) {
for( int subRow = 0; subRow < 3; subRow++ ) {
for( int column = 0; column < output[0].length; column ++ ) {
if( ( output[row][column] <= 7 ) || ( output[row][column] == card1 ) || ( output[row][column] == card2 ) )
7 System.out.print( " \033[4" + color[row][column] + "m \033[0m" );
else if ( subRow == 1 )
8 System.out.print(" " + output[row][column] + " ");
else
System.out.print(" ");
}
9 System.out.println();
}
}
System.out.print( "첫 번째 카드를 선택하세요: " );
card1 = scan.nextInt();
card1Row = card1 / 10 - 1;
10 card1Column = card1 % 10 - 1;
System.out.print( "두 번째 카드를 선택하세요: " );
card2 = scan.nextInt();
card2Row = card2 / 10 - 1;
11 card2Column = card2 % 10 - 1;
12 } while( ( 0 <= card1Row ) && ( card1Row < 4 ) && ( 0 <= card1Column ) && ( card1Column < 4 )
&& ( 0 <= card2Row ) && ( card2Row < 4 ) && ( 0 <= card2Column ) && ( card2Column < 4 ) );
scan.close();
13 }
}