문제: 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력: 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력: 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
예제입력 : 5 예제출력
*********
*******
*****
***
*
***
*****
*******
*********
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine());
br.close();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < num; i++) {
for (int j = 0; j < i; j++) {
sb.append(" ");
}
for (int k = 0; k < 2 * num -(2 * i + 1); k++) {
sb.append("*");
}
sb.append("\n");
}
for (int i = 0; i < num - 1; i++) {
for (int j = 1; j < num - 1 - i; j++) {
sb.append(" ");
}
for (int k = 0; k < 3 + (2 * i); k++) {
sb.append("*");
}
sb.append("\n");
}
System.out.print(sb);
}
}
흐름
-`빈칸, 별'을 상부, 하부로 나눠서 for문을 돌림
빈칸
0 - 1 - 2 - 3 - 4
0부터 시작해서 n-1까지 증가했다가
3 - 2 - 1 - 0
다시 0으로 감소
별
9 - 7 - 5 - 3 - 1
k는 0부터 2n -(2i +1)까지 반복
3 - 5 - 7 - 9
k는 0부터 3+2i까지 반복
수도코드
1. br로 입력값 받아옴 2.상부 for (0부터 시작해서 n보다 작게) 빈칸 for (0부터 i보다 작게) 별 for (0부터 2n -(2i +1)보다 작게) 하부 for (0부터 n-1보다 작게) 빈칸 for (1부터 n-1-i보다 작게) 별 for (0부터 3+2i보다 작게)