반응형
-내 생각
이번 문제는 별 찍기-16 문제와 아주 유사한 문제였다. 예제 출력에서 규칙성을 찾아보면, 먼저 마지막 줄은 항상 모든 별을 출력하고, 마지막 행 이전의 행들은 찍었다 안 찍었다를 반복하는 것이 아닌, 특정 범위의 양 끝 부분만 별을 찍는 것이다. 예제 출력 4를 보면, 별 찍기-16과 마찬가지로 n번 째 열에 별을 한 개 찍고 행이 증가할 수록 n을 기준으로 양방향으로 +j씩 별의 범위가 증가하게 된다. 그렇다면 이 범위에서 양 끝에 속하는 열에만 별을 찍어주면 된다.
for(int i=0;i<n;i++) { // 별의 범위에서 양 끝에 속하는 열을 출력해야 하므로, 0부터 시작한다.
// 예를들어 n이 4일 경우 첫 번째 행은 4번 열에만 별이 찍히고,
// 두 번째 행은 4-1, 4+1 열에만 별이 찍히게 된다.
for(int j=1;j<2*n;j++) { // 열의 범위는 별 찍기-16과 동일하다.
if(j>n+i) break; // 마지막 별을 찍었으면 반복문을 벗어난다.
if(i==n-1) { // 마지막 행에 도착하면 모든 열에 별을 찍는다.
System.out.print("*");
continue;
}
if(j==n-i || j==n+i) { // 범위의 양 끝에 별을 찍는다.
System.out.print("*");
}else
System.out.print(" ");
}
System.out.println();
}
반응형