C언어

이중 for문에 대한 이해(2)

뀨린 2021. 1. 6. 18:35

문제풀이(2)

 

오른쪽 직각삼각형 출력하기     

 

     *
    **
   ***
  ****
 *****
******

 

#include <stdio.h>

int n;

int main(){
  
  scanf("%d", &n);
  
	for (int i = 0; i < n; i++) { //(1)
		for (int j = n-1; j >= i; j--) {  //(2)
			putchar('\t');
		}
		for (int k = 0; k <= i; k++) {  //(3)
			printf("*\t");
		}
		putchar('\n');
		}

  return 0;
} 

(1): 줄을 바꿔주는 for문(행의 개수)

(2): 공백을 출력하는 for문(왼쪽으로 정렬하기 위함)

(3): 별을 출력하는 for문

 

(1): (3)의 for문에서 별의 갯수를 상관하는 for문

이 for문의 i의 값과 별을 찍어야하는 갯수가 같다! 

 

(2): 0 1 2 3 4 5 6 (행 기준)중 0 1 2 3 4 5 까지 공백이 들어가야하고 6번째 줄에는 별이 6개가 들어가야 한다!

 

규칙을 찾으면 된다! 

 

00000* 공백 5 별 1

0000** 공백 4 별 2

000***  공백 3 별 3

00****  공백 2  별 4

0*****  공백 1 별 5

****** 공백 0 별 6 

 

>>0은 공백을 의미

더보기

총 찍어야하는 별의 개수가 6개일 경우

첫째줄의 별이 1개라면, 나머지 5개의 공간에는 공백이 출력되어야 한다.

두번째줄에는? 공백4개 + *2개 이런식으로 반복해준다. 

그렇기때문에, j는 n-1개부터 해서 하나씩 줄여가고 i는 개수를 늘려간다.