본문 바로가기
개발/Java

Java 반복문 - 다중 for문 별 찍기 (피라미드, 역 피라미드)

by yhyuk 2021. 4. 26.
728x90
반응형

1. 피라미드 만들기

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("원하는 행 입력: ");
int row = Integer.parseInt(reader.readLine());

for (int i=0; i<row; i++) {
    for (int j=1; j<row-i; j++) {
    	System.out.print(" ");
    }
    for (int j=0; j<i*2+1; j++) {
    	System.out.print("*");
    }
    System.out.println();
}


//output
원하는 행 입력: 5
    *
   ***
  *****
 *******
*********

[해설]

1번째 for문

 - 입력값(row) 만큼 행 루프

 

2번째 for문 : j < row-i

 - 공백은 5행 기준으로, 1행 = 4 , 2행 = 3.... 즉 공백은 한개씩 줄어간다.

 

3번째 for문 : j  <  i*2+1

 - 별(*) 1개 시작으로 2개씩 증가, 즉 별의 개수는 홀수

 

 

2. 역 피라미드 만들기

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("원하는 행 입력: ");
int row = Integer.parseInt(reader.readLine());

for (int i=row; i>0; i--) {
    for (int j=row-i; j>0; j--) {
    	System.out.print(" ");
    }
    for (int j=i*2-1; j>0; j--) {
    	System.out.print("*");
    }
    System.out.println();
}


//output
원하는 행 입력: 5
*********
 *******
  *****
   ***
    *

[해설]

1번째 for문 : i = row 

 - 입력값 row 만큼 루프를 돌린다.

 

2번째 for문 : j = row-i 

 - 공백이 첫행부터 마지막행까지 1씩 점점 늘어남으로 초기값 row-i 에서 감소 시킨다.

 

3번째 for문 : j = i*2-1 

 - 별(*)시작은 공백없이 입력값5 기준으로, 별은 9개->7개->5개.... 즉 2개씩 감소

 - 1번째 for문에서 i=row로 지정했기때문에 i값 감소할 때 마다, j=9 -> j=7 -> j=5 ...

728x90
반응형

댓글