반응형
-해법
이번 별 찍기에서의 규칙성은 1번째 줄은 첫 번째 열과 마지막 열에 1개, 두 번째 줄은 2개,.... 이런 식으로 가게 된다.
필자의 경우에는 윗부분과 아랫부분으로 나누어서 생각하였고, 윗부분에 중앙 부분까지 포함이 되어있다.
// 윗 부분 반복문
for(int i=0;i<n;i++) { // 중앙까지 5개의 줄을 사용
for(int j=1;j<2*n+1;j++) { // 열의 개수는 윗 부분과 아랫 부분 모두 동일하다.
if((j<=1+i && j>=1) || (j>=2*n-i && j<=2*n)) { // 두 조건을 사용하는데, 시작 부분은 첫 번째 열과 마지막 열이다.
// 범위는 시작 + i로 , 끝 -i로 정할 수 있다.
System.out.print("*"); // 별을 찍어준다.
}else {
System.out.print(" ");
}
}
System.out.println();
}
//아랫 부분 반복문
for(int i=n-1;i>0;i--) { // 아랫 부분은 별의 개수가 감소하므로 감소 반복문
for(int j=0;j<2*n;j++) { // 열의 시작부분이 바뀌었지만 전체 개수의 변화는 없다.
if((j<(0+i)&&j>=0) || (j>=(2*n-i) && j<=2*n)) { //마찬가지로 시작과 끝부터 +-i만큼 찍기
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.println();
}
반응형