java ㄹ자 출력하기

zigzag1

정보처리기사를 준비하셨던 분들은 ㄹ자로 정렬하는 문제를 접해보셨을 텐데요. 오늘은 java ㄹ자 출력(지그재그) 방법에 대해서 알아보겠습니다.

일단 사용자로 부터 입력받은 숫자에 제곱을 한 숫자만큼 출력하되 이를 지그재그 형태 즉, ㄹ자 형태로 한번 출력해 보겠습니다.

1. 예제 소스

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

public class zigzag {

 public static void main(String[] args) throws IOException {
  
	 	System.out.print("숫자 입력 ->" );
	 	BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));  
	 	//사용자로 부터 숫자를 입력 받기 위해 BufferedReader를 사용.

	 	int a =Integer.parseInt((kbd.readLine()));     								
	 	//입력 받은 숫자를 parseInt를 이용하여 정수형태로 바꿔 a에 저장.

	 	int[][] number = new int[a][a];   
	 	///입력받은 숫자의 형태로 배열을 생성
	 	int count = 1;    
	 	//배열안에 차례대로 들어갈 숫자
  
	 	int j=0;  
    
  			for(int i=0; i<=a-1; i++){ 
  				//행의 갯수 즉 사용자로부터 3을 입력받으면    
                                                                                  
  				// number[0][],[1][],[2][]까지 수행됨
  				if ((i%2)==0){
  					//count의 숫자가 입력되는 진행 방향을 결정 i를 2로 나눠서 0일경우

  					for(j =0; j<=a-1; j++){     
  						// ---> 방향으로 진행 배열[i][a-1] 즉 3을 입력받으면 [0][0]~[0][2]까지    
  						number[i][j]=count; 
  						//count 값을 증가시키면서 해당 배열방에 저장함
    
  						count++;
  					}
  				}else{              
  					//count의 숫자가 입력되는 진행 방향을 결정 i를 2로 나눠서 0일 아닐경우
            
  					// 만약 i값이 1이라면
  					for(j =a-1; j>=0; j--){          
  						//[1][a-1] 즉 [1][2]~[1][0] 방까지
  						
  						number[i][j]=count; 
  						// count값을 증가시키면서 차례대로 방에 넣는다.
  						count++;
  					}
  				}
  			}
  
  			for (int k=0; k<=a-1; k++){           
  				//배열의 행에 해당
  				for (int l=0; l<=a-1; l++){   
  					// 배열의 열에 해당
  					System.out.print(number[k][l]+"\t"); 
  					// 저장된 값을 차례대로 출력한다
    
  					}
  				System.out.println(); 
  				} 
 			}
		}

2. 간단 설명

  • 사용자가 입력산 숫자*숫자 만큼의 정수를 0부터 차례대로 출력
  • 배열의 행에 따라 출력 되는 방향을 결정
  • 차례대로 배열에 저장후 한꺼번에 출력

3. 결과

zigzag1

100을 입력하고 수행된 결과입니다.

4. 추가 사항

이 예제는 사용자의 숫자에 따라 배열방이 결정됩니다.

만약 사용자가 100입력게 되면 총 10000개의 숫자가 출력되게 됩니다.


답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.