숫자를 입력 받아 아래와 같은 모양으로 별 찍기


우선 지그재그 모양은 첫번째 줄과 두번째 줄을 하나의 for문으로 돌린다.(한 묶음이라 생각), 첫번째 줄 첫번째 칸은 *로 시작하고, 그다음이 공백이 채워지며, 두번째 줄 두번째 칸은 공백으로 시작해 윗줄과 반대로 출력이 된다.
첫번째 for문에서 입력받은 num의 2배수까지 반복 실행한다. 그리고 홀수번째 케이스와 짝수번째 케이스를 나누어 그 안에서 다시 for문을 돌린다.
i가 0일 때에는 ②번 for문을 실행하고 i가 1일 때는 ①번 for문을 실행한다. 그리고 if문이 끝난 후 한 줄을 띄워주면 위와 같은 모양을 얻을 수 있다.
import java.util.Scanner;
public class stamp_stars {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
for (int i = 0; i < num * 2; i++) {
if(i % 2 == 1) {
①for(int j = 1; j <= num; j++) {
if(j % 2 == 0) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
}else {
②for(int j = 1; j <= num; j++) {
if(j % 2 == 1) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
}
System.out.println();
}
}
}
먼저 대칭으로 만들 삼각형의 줄 수를 입력 받는다.
전체 줄 수는 입력받은 숫자의 2배수 보다 하나 작은 수이기 때문에 (num*2)-1까지 for문을 돌린다.
삼각형의 모양을 보면 num이 7일 때, 0~6번째 줄까지는 역삼각형이고 i가 num보다 커지는 순간부터 정삼각형이 만들어지기 때문에 if문으로 체크 해준다.
각 줄을 보면 첫번째 줄은 13개, 두번째 줄은 공백을 포함해 12개~대칭점까지는 7개가 되고 그 이후에는 한개씩 늘어난다. 그리고 별의 개수는 13, 11, 9..2개씩 감소하고 공백은 앞쪽에서 하나씩 증가한다.
이렇게 생각했을 때 num=7인 경우,
| i | 식(num-i)*2-1 |
|---|---|
| 0 | (7-0)*2-1 = 13 |
| 1 | (7-1)*2-1 = 11 |
| 2 | (7-2)*2-1 = 9 |
i가 0일 때, 첫번째 if문으로 들어가 두 개의 for문을 모두 도는데, ①번 for문은 조건이 성립되지 않기 때문에 pass, ②번 for문으로 들어가 을 찍어준다. i가 1일 때는 ①번 for문에서 앞쪽에 공백을 찍어주고 ②번 for문에서 (num-i)2-1 만큼의 *을 찍어준다.
이렇게 대칭점까지 찍어주면 else문으로 넘어가게 되고 ①번,②번 for문과 반대로 ③번, ④번 for문을 만들어주면 대칭되는 별찍기를 완성할 수 있다.
import java.util.Scanner;
public class stamp_symmetric_stars {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
for(int i = 0; i < (num*2)-1; i++) {
if(i < num) {
①for(int j = 0; j < i; j++) {
System.out.print(" ");
}
②for(int j = 0; j < (num-i)*2-1; j++) {
System.out.print("*");
}
System.out.println();
}else {
③for(int j = 0; j < (num-1)*2-i; j++) {
System.out.print(" ");
}
④for(int j = 0; j < (i+1-num)*2+1; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
}
예전에 했던 것을 다시 정리하기 위해서 오랜만에 보는데,,,,어렵다,,,여전히 어렵다ㅠㅠㅠㅠㅠ다시 꼼꼼하게 정리해보자.....😫