[TIL] 배열 연습문제 (오목 만들기)


1) 다음 세 개의 단계를 순차적으로 작성하시오.

1-1. 문자(char) 100개짜리 문자 배열 객체를 생성하시오. 객체 이름은 board로 한다.

1-2. 1-1번 문제에서 생성한 board 배열에 문자 '┼'를 모두 채우시오.(단. 반복할 때 <<이중 for문>>을 사용할 것)

1-3 board 배열을 다음처럼 출력하시오.

         ┼┼┼┼┼┼┼┼┼┼
         ┼┼┼┼┼┼┼┼┼┼
         ┼┼┼┼┼┼┼┼┼┼
         ┼┼┼┼┼┼┼┼┼┼
         ┼┼┼┼┼┼┼┼┼┼
         ┼┼┼┼┼┼┼┼┼┼
         ┼┼┼┼┼┼┼┼┼┼
         ┼┼┼┼┼┼┼┼┼┼
         ┼┼┼┼┼┼┼┼┼┼



public class arrayTestProgram {
	
	public static void main(String[] args) {

	      {
	         System.out.println("--<1번 문제 풀이>----------------------");

	         // 1-1 답안을 작성하시오.
             
	         char[] board = new char[100];

	         // 1-2 답안을 작성하시오.
             
	         for (int y = 0; y < 10; y++)
	            for (int x = 0; x < 10; x++)
	               board[10 * y + x] = '┼';

	         // 1-3 답안을 작성하시오.
             
	         for (int y = 0; y < 10; y++) {
	            for (int x = 0; x < 10; x++)
	               System.out.printf("%c", board[x]);

	            System.out.println();
	         }

	         System.out.println();
	      }

2) board 배열을 <<"2차원 배열">>로 변경하고, 1번 문제와 동일한 단계의 코드를 작성하시오.

2-1. 문자(char) 100개를 저장할 수 있는 문자 <<이차원 배열>> 객체를 생성하시오. 객체 이름은 board로 한다.

2-2. 2-1번 문제에서 생성한 board 배열에 문자 '┼'를 모두 채우시오.(단. for문은 두개를 사용할 것)

2-3 board 배열을 다음처럼 출력하시오.

               ┼┼┼┼┼┼┼┼┼┼
               ┼┼┼┼┼┼┼┼┼┼
               ┼┼┼┼┼┼┼┼┼┼
               ┼┼┼┼┼┼┼┼┼┼
               ┼┼┼┼┼┼┼┼┼┼
               ┼┼┼┼┼┼┼┼┼┼
               ┼┼┼┼┼┼┼┼┼┼
               ┼┼┼┼┼┼┼┼┼┼
               ┼┼┼┼┼┼┼┼┼┼

	      {
	         System.out.println("--<2번 문제 풀이>----------------------");

	         // 2-1 문제를 풀이하시오.
             
	         char[][] board = new char[10][10];
             
	         // 2-2 문제를 풀이하시오.
             
	         for (int y = 0; y < 10; y++)
	            for (int x = 0; x < 10; x++)
	               board[y][x] = '┼';
                   
	         // 2-3 문제를 풀이하시오.
             
	         for (int y = 0; y < 10; y++) {
	            for (int x = 0; x < 10; x++)
	               System.out.printf("%c", board[y][x]);

	            System.out.println();
	         }
	         System.out.println();
	      }

  1. 2번 문제에서 풀이한 코드를 복사해서 다음처럼 boar의 테두리를 보강하는 코드로 수정하시오.
    (주의. 단계별로 코드를 작성한다. 그리고 board 배열의 크기를 10x10 에서 12x12 크기로 변경할 것)
               ┌┬┬┬┬┬┬┬┬┬┬┐ <- 테두리
               ├┼┼┼┼┼┼┼┼┼┼┤
               ├┼┼┼┼┼┼┼┼┼┼┤
               ├┼┼┼┼┼┼┼┼┼┼┤
               ├┼┼┼┼┼┼┼┼┼┼┤
               ├┼┼┼┼┼┼┼┼┼┼┤
               ├┼┼┼┼┼┼┼┼┼┼┤
               ├┼┼┼┼┼┼┼┼┼┼┤
               ├┼┼┼┼┼┼┼┼┼┼┤
               ├┼┼┼┼┼┼┼┼┼┼┤
               ├┼┼┼┼┼┼┼┼┼┼┤
               └┴┴┴┴┴┴┴┴┴┴┘ <- 테두리

	      {
	         System.out.println("--<3번 문제 풀이>----------------------");

	         int width = 12;
	         int height = 12;
             
	         // 3-1 문자형 배열을 12x12 크기의 이차 배열 객체를 작성하시오. 이름은 board로 한다.
             
	         char[][] board = new char[height][width];
             
	         // 3-2 board 배열을 모두 '┼'로 채우시오.
             
	         for (int y = 0; y < height; y++)
	            for (int x = 0; x < width; x++)
	               board[y][x] = '┼';
                   
	         // 3-3 상단/하단/좌측/우측 테두리를 채우는 코드
             
	         for(int i=0; i<12; i++) {
	            board[0][i] = '┬';
	            board[11][i] = '┴';
	            board[i][0] = '├';
	            board[i][11] = '┤';
	         }
             
	         // 3-4 각 꼭지점을 채우는 코드
             
	         board[0][0] = '┌';
	         board[0][11] = '┐';
	         board[11][0] = '└';
	         board[11][11] = '┘';

	         // 3-5 board 이차 배열을 출력하시오.
             
	         for(int y=0; y<12; y++) {
	            for(int x=0; x<12; x++) 
	               System.out.printf("%c", board[y][x]);
	            
	            System.out.println();
	         }

      }

               

4-1 다음처럼 오목판을 출력한다.

                                 ┌┬┬┬┬┬┬┬┬┬┬┐ 
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 └┴┴┴┴┴┴┴┴┴┴┘               
               

4-2 다음처럼 오목을 입력 받는다.

위의 오목판에 오목을 두기 위한 위치를 입력하세요. 입력 방법: x sp y >

4-3 다음처럼 오목을 포함한 오목판을 출력한다.

                                 ┌┬┬┬┬┬┬┬┬┬┬┐ 
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼○┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 ├┼┼┼┼┼┼┼┼┼┼┤
                                 └┴┴┴┴┴┴┴┴┴┴┘      
               

	          {
	            System.out.println("--<4번 문제 풀이>----------------------");  
	               
	            Scanner scan = new Scanner(System.in);
	            
	            int x_ = scan.nextInt();
	            int y_ = scan.nextInt();
	               

	  	         int width = 12;
	  	         int height = 12;
	  	         char[][] board = new char[height][width];
	  	         for (int y = 0; y < height; y++)
	  	            for (int x = 0; x < width; x++)
	  	            	if(x==x_ && y==y_)
	  	            		board[y][x]='○';
	  	            	else
	  	            		board[y][x] = '┼';
	  	         for(int i=0; i<12; i++) {
	  	            board[0][i] = '┬';
	  	            board[11][i] = '┴';
	  	            board[i][0] = '├';
	  	            board[i][11] = '┤';
	  	         }
	  	         board[0][0] = '┌';
	  	         board[0][11] = '┐';
	  	         board[11][0] = '└';
	  	         board[11][11] = '┘';

	  	         for(int y=0; y<12; y++) {
	  	            for(int x=0; x<12; x++) 
	  	               System.out.printf("%c", board[y][x]);
	  	            
	  	            System.out.println();
	  	         }
	          }

	  	         System.out.println();

  1. 4번 문제에서 풀이한 코드를 복사해서 할 수 있는 만큼 오목게임을 만들어보시오.

	            
	               { System.out.println("--<5번 문제 풀이>----------------------");
	                  
	                 int width = 12;
	     	         int height = 12;
                     
	     	         // 3-1 문자형 배열을 12x12 크기의 이차 배열 객체를 작성하시오. 이름은 board로 한다.
                     
	     	         char[][] board = new char[height][width];
                     
	     	         // 3-2 board 배열을 모두 '┼'로 채우시오.
                     
	     	         for (int y = 0; y < height; y++)
	     	            for (int x = 0; x < width; x++)
	     	               board[y][x] = '┼';
                           
	     	         // 3-3 상단/하단/좌측/우측 테두리를 채우는 코드
                     
	     	         for(int i=0; i<12; i++) {
	     	            board[0][i] = '┬';
	     	            board[11][i] = '┴';
	     	            board[i][0] = '├';
	     	            board[i][11] = '┤';
	     	         }
                     
	     	         // 3-4 각 꼭지점을 채우는 코드
                     
	     	         board[0][0] = '┌';
	     	         board[0][11] = '┐';
	     	         board[11][0] = '└';
	     	         board[11][11] = '┘';

	                  
			            System.out.print("바둑돌의 위치 : ");
	      				
			            boolean black = true ;
			            while(true) {
			            	
			            	Scanner scan = new Scanner(System.in);
			            	
			            	int x_ = scan.nextInt();
			            	int y_ = scan.nextInt();
			            	
			            	for(int y=0; y<height; y++)
			            		for(int x=0; x<width; x++)
			            			if(x==x_ && y==y_)
			            				if(black) {
			            					board[y][x]='●';
			            				} else {
			            					board[y][x]='○';
			            				}
			            	for(int y=0; y<height; y++) {
			            		for(int x=0; x<width; x++)
			            			System.out.printf("%c", board[y][x]);
			            	System.out.println();
			            	}
			            	black = !black;
   	
			            }
	               }
	}
}

좋은 웹페이지 즐겨찾기