컴프 리포트

@codemaru · April 19, 2007 · 2 min read

몇 일전 후배 녀석 숙제를 해주다 보게된 참신한 문제가 있어서 소개해 봅니다. 기초 프로그래밍 레포트입니다. 보통 *로 모양 만드는 것과 같은 이중 for문을 응용하는 문제 중의 하나입니다. 아래와 같은 출력을 만드는 것이죠.

출력하고자 하는 라인의 수를 입력 하시오(홀수만) : 5

1       1
2   2
3
2   2
1       1

그런데 이놈이 보기와는 다르게 그다지 간단하지 않았습니다.
두 가지가 애매한데 출력 모양 줄어들었다 다시 늘어나죠.
다음으로 출력되는 수열입니다. 1,2,3,2,1 이런 식의 수열이죠.
뭔가 간단한 방법이 있을것 같은데 저는 딱히 떠오르지 않더군요.

전 앞에 꺼는 그냥 조건문 두 개로, 뒤에 거는 M - abs(M - i) + 1로 풀었습니다.
M은 입력 받은 5를 2로 나눈 값이고, i는 0부터 5까지 증가하는 루프 변수 입니다.
근데 더 좋은 방법이 있을거 같은데 잘 떠오르지 않네요.

소스 보기...

#include <stdio.h>  
#include <math.h>  
 
int \_tmain(int argc, \_TCHAR\* argv[])  
{  
    int line;  
    int mid;  
 
    printf("출력하고자 하는 라인의 수를 입력 하시오(홀수만) : ");  
    scanf("%d", &line);  
    getchar();  
    mid = line / 2;  
 
    for(int i=0; i<line; ++i)  
    {  
        for(int j=0; j<line; ++j)  
        {  
            if(j==i || i+j+1 == line)  
                printf("%d",  mid - abs(mid - i) + 1);  
            else  
                printf(" ");  
        }  
 
        printf("\n");  
    }  
 
    return 0;  
}
@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중