본문 바로가기
Problem Solving

[BOJ 3054] 피터팬 프레임

by Ladun 2019. 12. 30.

https://www.acmicpc.net/problem/3054

 

3054번: 피터팬 프레임

문제 "피터팬 프레임"은 단어를 다이아몬드 형태로 장식하는 것이다. 알파벳 X를 피터팬 프레임으로 장식하면 다음과 같다. ..#.. .#.#. #.X.# .#.#. ..#.. "웬디 프레임"은 피터팬 프레임과 유사하지만, 다이아몬드를 '*'로 만드는 것이다.  알파벳 X를 웬디 프레임으로 장식하면 다음과 같다. ..*.. .*.*. *.X.* .*.*. ..*.. 단어가 주어졌을 때, 3의 배수 위치(세 번째, 여섯 번째, 아홉번째, ...)에 있는 알파

www.acmicpc.net


"피터팬 프레임"은 '#'을 다이아몬드로, "웬디 프레임"은 '*"을 다이아몬드로 출력하는 모양이다.

 

두 모양 다 다이아몬드를 출력하는 형태이므로, 배열을 출력할 크기만큼 '.'로 초기화를 한 후에 순서대로 두 다이아몬드를 배열에 그리면 된다.

 

"웬디 프레임"이 "피터팬 프레임"보다 앞에 있으므로 "피터팬 프레임"을 그리고 "웬디 프레임"을 그린 다음에 출력하면 된다.


#include <stdio.h>

char S[16], R[5][62];

void Diamond(char c, int N)
{
	int k = N * 4;

	R[0][k + 2] = R[4][k + 2] = R[1][k + 1] = R[1][k + 3] = R[3][k + 1] = R[3][k + 3] = R[2][k] = R[2][k + 4] = c;
	R[2][k + 2] = S[N];
}

int main()
{
	int len  =0;
	scanf("%s", S);
	while (S[len])len++;

	for (int i = 0; i < 5; i++)
		for (int j = 0; j < 4 * len + 1; j++)
			R[i][j] = '.';
	for (int i = 0; i < len ; i++)
			Diamond('#', i);
	for (int i = 2; i < len; i += 3)
		Diamond('*', i);
	for (int i = 0; i < 5; i++)
		puts(R[i]);
}

'Problem Solving' 카테고리의 다른 글

[BOJ 1788] 피보나치 수의 확장  (0) 2020.01.01
[BOJ 2407] 조합  (0) 2020.01.01
[BOJ 2960] 에라토스테네스의 체  (0) 2019.12.30
[BOJ 1629] 곱셈  (0) 2019.03.17
[BOJ 1964] 오각형, 오각형, 오각형…  (0) 2019.03.17