๋ฌธ์
ํด์ค
๋ฌธ์ ์ด๋ฆ๋ง ๋ณด๋ฉด ์ฐ๋ฆฌ๊ฐ ํํ ์จ๋ผ์ธ ์ ์ง์์ ๋ณผ ์ ์๋ ๋ณ์ฐ๊ธฐ, ๋ฝํด๋ด์ผ ์กฐ๊ธ ์ด๋ ค์ธ ์ ๋ ์๋ ๋ณ์ฐ๊ธฐ์ ๋ถ๊ณผํ๋ค๊ณ ์๊ฐํ ์ ์๋ค.
โฆ
์ค์ ๋ก๋ ๊ทธ๋ ๋ค.
Source : GIPHY
???
๋์ ์ด๋ฒ์๋ ๋ค๋ฅธ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๊ธฐ๋ก ํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ด๋ฐ ๋ณ ์ฐ๊ธฐ ๋ฌธ์ ๋ฅผ ํธ๋๋ฐ๋ ์ฃผ๋ก ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ํ์ฉ๋๋ค.
- ๋ํ์ง์ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ฏ ํฐ ๋ฐฐ์ด์ ๋๊ณ ๋ณ์ ๊ท์น์ ํ์ ํด ๊ทธ ๊ท์น์ ๋ง์ถฐ ๋ฐ๋ณต๋ฌธ์ ํตํด ๋ณ์ ์ฐ๋ ๋ฐฉ๋ฒ
- ๋ฐฐ์ด ์์ด ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฌ๋ ๋์์ ๊ทธ๋๋ก ์ถ๋ ฅํ๋ ๋ฐฉ์
์ด๋ฒ์ ์ฌ์ฉ๋ ๋ฐฉ๋ฒ์ 1๋ฒ ๋ฐฉ๋ฒ์ ์ฌํํ์ด๋ผ๊ณ ์๊ฐํด๋ ์ข์ ๋ฏ ํ๋ค.
์ด๋ฒ์๋ ํฌ์ธํฐ์ ๊ฐ๋ ์ด ์ฌ์ฉ๋์๋๋ฐ ํฌ์ธํฐ์ ๋ํ ์์ธํ ๊ฐ๋ ์ ์ถํ์ ๋ค๋ฅธ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๋ณ๋๋ก ๋ค๋ค ๋ณด๋๋ก ํ๊ณ ์ด๋ฒ๋ฌธ์ ์ ํ์ฉ๋ ํต์ฌ ํจ์๋ค์ ์๊ฐํ๋๋ก ํ๊ฒ ๋ค.
memset - String.h ํค๋์ ํฌํจ
mem์ Memory(๋ฉ๋ชจ๋ฆฌ)๋ฅผ ์๋ฏธํ๋ฉฐ ํน์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ด๋ ํ ๊ฐ์ ์ง์ด ๋ฃ์ ๋ ์ฌ์ฉ๋๋ ํจ์
sizeof - stdio.h ํค๋์ ํฌํจ
๋ฐฐ์ด์ ์ฌ์ด์ฆ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ๊ฐ์ ธ์ค๋ ํจ์์ด๋ฉฐ ๋ ํน์ ์๋ฃํ์ ํฌ๊ธฐ๋ฅผ ๋ฐํํ๋๋ก ํ ์ ์๋ ํจ์ ์ด๋ค. ์) sizeof(int) โ 4๋ฐ์ดํธ ์ด๋ฏ๋ก 4๋ฅผ ๋ฐํ
ํต์ฌ ํจ์๋ฅผ ํ์ธํ์ผ๋ ์ด์ ๋ ์ด๋ฒ ๋ฌธ์ ๋ฅผ ํธ๋๋ฐ ์ฌ์ฉ๋ ์์ค ์ฝ๋๋ฅผ ํ์ธํด๋ณด์.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int k=0, first_width, first_height,width,height,w_cursor=0,h_cursor=0;
bool arr[400][500],left_bottom = true;
void first_setup(int n) // ์ฒซ ์ค๋น ์์
์ ์ํ ํจ์
{
first_width = width = 4*n-3; //๊ฐ๋ก
first_height = height = n != 1 ? 4*n-1 : 1; //์ธ๋ก
for(int i=0; i< (n == 1 ? 1 : height); i++)
memset(arr[i],false,sizeof(bool)*(width));
memset(arr[0],true,sizeof(bool)*width);
}
void set(int n)
{
for(int k=0; height >= 3; k++)
{
if(k%2 == 1 && k > 0)
h_cursor += 2;
for(int i=0; i<height; i++)
memset(arr[i+h_cursor]+(!left_bottom ? width+1 : first_width - width),true,sizeof(bool));
memset(arr[left_bottom ? first_height-1-k: k+1] +w_cursor,true,sizeof(bool)*(first_width - (2*k)));
height -= 2;
if(k % 2 == 0)
w_cursor += 2;
left_bottom = !left_bottom;
width = (!left_bottom) ? width - 2 : width;
}
}
int main()
{
int n;
scanf("%d",&n);
first_setup(n);
set(n);
for(int i=0; i<first_height; i++) // ์ถ๋ ฅ
{
for(int j=0; j<first_width; j++)
{
if(i != 1)
printf("%c",arr[i][j] == true ? '*' : ' ');
else if(arr[i][j] == true)
printf("*");
}
printf("\n");
}
return 0;
}
์ด๋ฒ ์์ค์ฝ๋๋ memset์ ์ฒ์ ํ์ฉํด๋ณด๋ ค๊ณ ํ๋ค๋ณด๋๊น ์๊ฐ๋ ๋ ์์๋๊ณ ์ต์ข ์ ์ผ๋ก ํ๊ธฐ๋ ํ์ง๋ง ๊ฒฐ๊ตญ ์คํ๊ฒํฐ ์ฝ๋์ ํํ๊ฐ ๋์ด ๋ฒ๋ฆฐ๊ฒ ๊ฐ์ง๋ง ์ผ๋จ ํ๋ํ๋ ์ด ์์ค์ฝ๋์ ์๋ฆฌ๋ฅผ ์ค๋ช ํด ๋ณด๋๋ก ํ๊ฒ ๋ค.
๋ณ์ฐ๊ธฐ ๊ท์น?
์ ์ฌ์ง์ n=3์ผ ๋ ๋ณ์ด ์ฐํ๋ชจ์ต์ ๋ณด์ฌ์ฃผ๊ณ ์๋ค. ์ฌ๊ธฐ์ n์ ์ผ๋ง๋ ๊ฐ๊ฒผ๋๋ฅผ ์๋ฏธํ๋ฉฐ, ์ค์ฌ ๋ณ์ ๊ธฐ์ค์ผ๋ก ๋ฐ๊นฅ์ชฝ๊น์ง ์ด 3๊ฒน์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ ๊ฒ์ผ๋ก ํ์ธ ํ ์ ์๋ค.
์ด ๋ ๊ฐ๋ ๊ฐ์ด ์ดํด๋ณด๋ฉด ๋ ๋ถ๋ช ํ ์ ์ ์๋ค.
๋ณ์ ์ฐ์ ์์๋ฅผ ์๊ฐํด ๋ณด๋ฉดโฆ.
์ ์ฌ์ง ์ฒ๋ผ 1๋ฒ, 2๋ฒ๊ณผ์ ์ ๊ณ์๋ฐ๋ณตํ๊ฒ ๋๋ฉด ์์ชฝ์ผ๋ก ๋ค์ด๊ฐ๋ฉด์ ์ด ๊ณผ์ ์ด
๊ณ์ ์ด์ด์ง๊ฒ ๋๋ค.
์ฃผ์์ฌํญ (?)
- โ์ฌ๊ธฐ๋ ๋๋ฒ์งธ ์ค์ ์ ๋ ๊ณต๋ฐฑ์ ์ฝ์ ํ๋ฉด ์๋๋ค. ์ฑ์ ํ ๋ ํ๋ฆฐ๊ฒ์ผ๋ก ์ฒ๋ฆฌ๋๋ค.
โฆ
์ด๋ฒ์ฝ๋๋ memsetํจ์ ํ์ฉํ๋ ๊ฒ์ ์์ง ์ต์ํ์ง ๋ชปํด ๋ฒ์กํ ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ๋ ๊ฒ ๊ฐ์๋ฐ ๊ธฐํ๊ฐ๋๋ค๋ฉด ์กฐ๊ธ๋ ์์ค์ฝ๋๋ฅผ ๋ค๋ฌ์ด์ ๋ค์ ํ์ด๋ณด๋ ๊ฒ๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ๋ค.