반응형
-해법
이 문제의 경우 최하단이 2*n-1개의 별을 찍는다는 것을 알 수 있다. 즉, 각 열의 중앙부터 첫 줄은 중앙 +- 0에 , 두 번째 줄은 중앙+-1에, 세 번째는 중앙+-2에.... 식으로 별을 찍어주면 되는데 주의사항은 문제에서는 언급이 되어있지 않지만, 각 별을 찍을 때 별이 마지막이 되어야 한다. 무슨 이야기냐면,
[ *]
[ ***]
[ *****]
[ *******]
[*********]
식으로 앞자리는 공백으로 채워줘야 하고 별 이후로는 공백을 찍으면 안 된다. 이것 때문에 많은 분들이 출력 형식 오류처리를 받는 것 같다. 이 부분만 주의해주면 된다.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
for(int i=0;i<n;i++) {
for(int j=1;j<2*n;j++) {
if(j>=n-i && j<=n+i) { // 중앙을 기준으로 +-i 범위에서는 별을 찍는다.
System.out.print("*");
}else { // 아닌 경우는 앞 자리에 공백을 채워준다.
System.out.print(" ");
}
if(j> n+i) break; // j가 별의 범위를 넘어서는 순간 반복문을 벗어난다.
}
System.out.println();
}
}
}
반응형