[C] 백준 2439번 : 별 찍기 - 2

2020. 6. 2. 11:50

 

숫자 N을 입력하면 규칙에 의해 별을 출력하는 문제로 아래와 같다.

 

백준 2439번

 

우선 문제를 보자마자 for문을 3개를 작성해야 한다고 생각했다.

 

1) 1행, 2행, 3행...N행까지를 출력하도록 명령하는 for문

2) 공백을 출력하도록 명령하는 for문

3) 별을 출력하도록 명령하는 for문

 

그래서 다음과 같이 코드를 작성했다.

#include <stdio.h>

int main(){
	int i, j, k;
	int n;
	
	scanf("%d", &n);
	for(i=1 ; i<=n ; i++) // 1) 1행, 2행,...N행까지를 출력하도록 명령하는 for문
    { 
    	for(j=1 ; j<=(n-i) ; j++) // 2) 공백을 출력하도록 명령하는 for문
    	{	printf(" "); }
	for(k=1 ; k<=i ; k++) // 3) 별을 출력하도록 명령하는 for문
        {	printf("*"); }
		printf("\n");
    }
}

백준에 제출하니 정답 처리 되었다.

 

처음에는 두번째 for문 안에 세번째 for문을 넣어야 하나 싶어서 그렇게 코드를 이것저것 짜보았는데 실행해보니 계속 다른 결과가 나왔다. 다시 생각해보니, 첫번째 for문에서 행을 n번동안 반복하면서 출력하는데, 그 각 행 속에서 "공백 출력"이 반복되고, "별의 출력"이 반복된다. 즉, 두번째 for문과 세번째 for문은 '포함관계'가 아니라 '병렬관계'인 것이다. 

 

이중 for문 구조 문제는 항상 할 때마다 헷갈리고 해결하기 위해선 여러번 시도해보아야 풀린다..

연습만이 살 길이니 다른 유형도 많이 풀어봐야지 !!

 

 

BELATED ARTICLES

more