카테고리 없음

자바실전_Day_23_02(숫자찍기(별찍기))

구이제이 2024. 1. 31. 20:43

-----------------------------------------------------------------------------------



1번째 예제





●결과값

 

//하나하나 요밀조밀 뜯어서 생각하기.

//위/아래 분할은 했다.

//아래 로직을 정확하게 계산하지 못했다.

//

 

 

//#객체 생성

Scanner scan = new Scanner(System.in);

System.out.println("숫자 입력 : ");

int input = scan.nextInt();

 

//#변수 선언및 초기화

int[][] number = new int[input][input];

int count = 0; // 결과값 증감

int tmp = input-1; //값을 입력하는 것에 따라 '띄어쓰기' 할지 말지 여부

double dvide= (input/2)+1; //위 / 아래 인지 분할하는 기준이되는 값

 

//#계산 및 출력

for(int i = 0 ; i < number.length; i++) {

for(int j = 0 ; j < input ; j++) {

//위에

if(i < dvide) {

if(i > j) {

System.out.print("\t");

}else {

count++;

System.out.print(+count+"\t");

}

 

//아래

}else {

if(tmp - i > j) { //규칙을 찾았고 그것을 공통으로 만들어야한다.

System.out.print("\t");

}else {

count++;

System.out.print(+count+"\t");

}

}

}//end of for

 

//한 줄이 끝나고, 그 다음에 숫자를 몆개 찍을지 계산하는 로직

if(i >= dvide-1 ) { // 아래값 : 아래의 값으로 전환되는 것을 나눠주는 로직

input +=1; // 숫자를 갯수의 여부

}else { // 윗값 :

if(i < dvide) { //위에서 내려올수록 값일수록, 갯수가 덜찍힌다.

input -=1;

}

}

System.out.println();

System.out.println();

}//end of for

 

 

-----------------------------------------------------------------------------------



1번째 예제 정석(Teacher 작품)





●결과값

 

int[][] arr = new int[7][7];

int value =1;

int middle = 0;

 

 

//값넣기

for(int i = 0 ; i < arr.length; i++) {

middle = arr.length/2;

 

if(i <= middle) {

for(int j=i; j<arr[i].length-i; j++) {

arr[i][j] = value;

value++;

}

}else {

for(int j = arr[i].length-(i+1); j<=i; j++) {

arr[i][j] = value;

value++;

}

}

 

}

 

 

//출력

for(int i = 0 ; i <arr.length; i++) {

for(int j = 0 ; j < arr[i].length; j++) {

if(arr[i][j] ==0) {

System.out.printf("%2s \t","");

}else {

System.out.print(arr[i][j] + "\t");

}

}

System.out.println();

System.out.println("-----------------------------------");

System.out.println();

 

}