본문 바로가기
프로그래밍/Java

[자바] 별찍기 공백있는 직각삼각형(이중for문)(+알고리즘) -4

by 청량리 물냉면 2019. 7. 14.
반응형
문제

별찍기(4) (공백있는 직각삼각형)

 

         *

        **

       ***

      ****

     *****

    ******

   *******

  ********

 *********

**********

 

 

for문(반복문)을 사용해 위 모양을 출력해보자 (총 10줄)

실행화면

 

코드
public class star4 {
	public static void main(String[] args) {
		int k = 0;
		for(int j = 0; j<10; j++) {
			for (int m = 9; m > j; m--) { //공백찍기 m(9개부터 하나씩 줄어듦)
				System.out.printf(" ");
			}
			for (int i = 0; i <= k ; i++ //*찍기 변수 i(1개부터 하나씩 커짐)
				System.out.printf("*");
			}
			k++;
			System.out.printf("\n");
		}
	}
}

 

코드 설명(알고리즘)
int k = 0;
for(int j = 0; j<10; j++) {
	for (int m = 9; m > j; m--) {
		System.out.printf(" ");
	}
	for (int i = 0; i <= k ; i++) {
		System.out.printf("*");
	}
	k++;
    }
  • m이 j보다 큰 동안 반복.
  • i가 k보다 작거나 같은 동안 반복.

 

첫번째 실행(j=0)

m = 9, m = 8, m = 7, ....., m = 0

m = 9, 8, 7, 6, 5, 4, 3, 2, 1일 때 공백이 출력된다.(총 9번)

(k = 0)

i = 0, i = 1, i = 2, ....., i = 10

i = 0 일 때 *이 한번 출력된다.

→ 결과:         *

→ ( "\n") 로 줄바꿈

 

두번째 실행(j=1)

m = 9, m = 8, m = 7, ....., m = 0

m = 9, 8, 7, 6, 5, 4, 3, 2 일 때 공백이 출력된다.(총 8번)

(k = 1)

i = 0, i = 1, i = 2, ....., i = 10

i = 0, 1 일 때 *이 한번씩 출력된다.(총 2번)

→ 결과:        **

→ ( "\n") 로 줄바꿈

 

세번째 실행(j=2)

m = 9, m = 8, m = 7, ....., m = 0

m = 9, 8, 7, 6, 5, 4, 3 일 때 공백이 출력된다.(총 7번)

(k = 2)

i = 0, i = 1, i = 2, ....., i = 10

i = 0, 1, 2 일 때 *이 한번씩 출력된다.(총 3번)

→ 결과:       ***

→ ( "\n") 로 줄바꿈

.

.

.

10번째 실행(j=9)

m = 9, m = 8, m = 7, ....., m = 0

m은 모두 j보다 작기 때문에 공백은 출력되지 않는다.

(k = 9)

i = 0, i = 1, i = 2, ....., i = 10

i = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 일 때 *이 한번씩 출력된다.(총 10번)

→ 결과:**********

→ ( "\n") 로 줄바꿈


 

 

반응형