몇 일전 후배 녀석 숙제를 해주다 보게된 참신한 문제가 있어서 소개해 봅니다. 기초 프로그래밍 레포트입니다. 보통 *로 모양 만드는 것과 같은 이중 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;
}