반응형
정보처리기사 실기를 취득할 때 다양한 알고리즘을 공부하곤 합니다.
지그재그 수열 알고리즘은 이때 접하게 되는데요.
이전 공부한 내용을 바탕으로 배열에 값을 할당하여
지그재그로 출력하는 예제를 구성해 보겠습니다.
알고리즘 소스
package test;
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("지그재그 수열을 구성할 숫자 입력(X*X) :" );
BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
//입력한 숫자만큼 수열을 구성 예) 3 입력 3*3 형태의 수열 구성.
int arr_num =Integer.parseInt((bfr.readLine()));
//입력받은 숫자를 읽어 정수형태로 arr_num 변수에 저장.
int[][] number = new int[arr_num][arr_num];
//해당 숫자만큼 배열생성
int zz_cnt = 1; //지그재그 수열값
//지그재그 구성로직
for(int i=0; i<=arr_num-1; i++){ //행
if ((i%2)==0){
//수열의 진행방향. true:왼->오, false:오->왼
for(int j=0; j<=arr_num-1; j++){
number[i][j]=zz_cnt;
//수열값 증가시키면서 배열에 차례대로 값을 저장.
zz_cnt++;
}
}else{
for(int j=arr_num-1; j>=0; j--){
number[i][j]=zz_cnt;
zz_cnt++;
}
}
}
//출력로직
for (int k=0; k<=arr_num-1; k++){ //행 출력
for (int l=0; l<=arr_num-1; l++){ // 열 출력
System.out.print(number[k][l]+"\t");
// 배열 값 출력.
}
System.out.println();//개행
}
}
}
소스 결과
기본적으로 구성에 필요한 기능은
배열, IF문, FOR문만 있으면 구현이 가능합니다.
저는 필요에 따라 지그재그의 구성을 동적으로 처리하기위해
BufferedReader와 InputStreamReader를 이용하여 수열을 구성할 배열의 길이를 입력 받았습니다.
위의 소스를 참고하여 자신만의 수열을 만들어 보시기바랍니다.
반응형
'Dev > Java' 카테고리의 다른 글
[Java] 메소드 오버로딩 정의와 예제 소스 (0) | 2022.11.15 |
---|---|
[Java] 상속 사용법과 예제 구현 소스 (0) | 2022.11.14 |
[Java] 접근제어자 정의 및 사용법 (Access Modifier) (0) | 2022.11.07 |
[Java] 클래스와 메소드 생성, 호출 사용법 (0) | 2022.11.04 |
[Java] 로또 번호 생성 프로그램(정렬, 랜덤 기능) (0) | 2022.11.02 |