티스토리 뷰




문제 1

 

프로그래밍을 좋아하는 효민이는 이집트에 가서 피라미드를 보았다. 그 순간 선생님이 알려 준 피라미드 별찍기가 생각났다. 효민이는 노트북을 키고 피라미드 예제를 코딩하기 시작하는데, 선생님이 알려준 피라미드는 너무 쉽다고 투정을 부린다.

 

그래서 효민이는 피라미드에 원하는 문자열을 삽입하여 피라미드를 멋있게 꾸미려고 한다.

 

입력

 

첫 번째 줄에는 홀수인 문자의 개수를 n 받는다.

두 번재 줄에는 문자의 개수가 홀수인 n만큼의 문자열을 입력받는다.

 

출력

출력은 문자열의 중간에 있는 문자(mid)가 피라미드의 꼭대기에 오고 mid-1, mid+1의 문자가 피라미드의 다음층으로 내려온다. mid-2, mid+2의 문자는 다음층으로 내려온다.

 

따라서 mid-k, mid+k의 문자는 k층 만큼 내려온다.



입/ 출력 예시


입력

27

abcdefghijklmnopqrstuvwxyz@

출력



코드


#include <stdio.h>

/*

made by hyomin

*/


int main() {


char str[10000];

int n;

int i = 0;

int j = 0;

int mid;

int null = 0;

int max = 1;

int k = 0;


scanf("%d", &n);

scanf("%s",str);

mid = n / 2;


for (i = 0; i<mid+1; i++) {

for (j = 0; j<mid - i; j++) {

printf(" ");

}


if (i == 0) {

printf("%c", str[mid + i]);

}

else {

printf("%c", str[mid - k]);

for (null = 0; null<max; null++) {

printf("*");

}

printf("%c", str[mid + k]);

max++;

max++;

}

printf("\n");

k++;

}


return 0;

}


출제의도


- 일반적인 for문을 이용한 별찍기는 프로그래밍에서 제일 중요한 부분이며 반복문이 없이는 어떠한 프로그래밍도 할 수 없다. 나는 학교에서 배운 내용보다 좀 더 수준이 높은 예제를 만들어보고 싶었다.


- 이 문제는 입력받은 str을 피라미드 위에 표시해야하므로 기존 피라미드 예제보다 훨씬 어려운 난이도를 제공하고 반복문의 사용에 대해 익숙해질 수 있는 문제이다.

Comments