๋ฌธ์ œ

๋ฌธ์ œ ๋งํฌ

ํ•ด์„ค

๋ฌธ์ œ ์ด๋ฆ„๋งŒ ๋ณด๋ฉด ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์˜จ๋ผ์ธ ์ €์ง€์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ณ„์ฐ๊ธฐ, ๋ฝํ•ด๋ด์•ผ ์กฐ๊ธˆ ์–ด๋ ค์šธ ์ˆ˜ ๋„ ์žˆ๋Š” ๋ณ„์ฐ๊ธฐ์— ๋ถˆ๊ณผํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

โ€ฆ

์‹ค์ œ๋กœ๋„ ๊ทธ๋ ‡๋‹ค.

Source : GIPHY

???

๋Œ€์‹  ์ด๋ฒˆ์—๋Š” ๋‹ค๋ฅธ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Ÿฐ ๋ณ„ ์ฐ๊ธฐ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ๋Š” ์ฃผ๋กœ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ํ™œ์šฉ๋œ๋‹ค.

  1. ๋„ํ™”์ง€์— ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋“ฏ ํฐ ๋ฐฐ์—ด์„ ๋‘๊ณ  ๋ณ„์˜ ๊ทœ์น™์„ ํŒŒ์•…ํ•ด ๊ทธ ๊ทœ์น™์— ๋งž์ถฐ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ๋ณ„์„ ์ฐ๋Š” ๋ฐฉ๋ฒ•
  2. ๋ฐฐ์—ด ์—†์ด ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋Š” ๋™์‹œ์— ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ์‹

์ด๋ฒˆ์— ์‚ฌ์šฉ๋œ ๋ฐฉ๋ฒ•์€ 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๊ฒน์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๋‘ ๊ฐœ๋„ ๊ฐ™์ด ์‚ดํŽด๋ณด๋ฉด ๋” ๋ถ„๋ช…ํžˆ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋ณ„์„ ์ฐ์„ ์ˆœ์„œ๋ฅผ ์ƒ๊ฐํ•ด ๋ณด๋ฉดโ€ฆ.

Untitled

์œ„ ์‚ฌ์ง„ ์ฒ˜๋Ÿผ 1๋ฒˆ, 2๋ฒˆ๊ณผ์ •์„ ๊ณ„์†๋ฐ˜๋ณตํ•˜๊ฒŒ ๋˜๋ฉด ์•ˆ์ชฝ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด์„œ ์ด ๊ณผ์ •์ด

๊ณ„์† ์ด์–ด์ง€๊ฒŒ ๋œ๋‹ค.

์ฃผ์˜์‚ฌํ•ญ (?)


  • โ†์—ฌ๊ธฐ๋Š” ๋‘๋ฒˆ์งธ ์ค„์€ ์ ˆ๋Œ€ ๊ณต๋ฐฑ์„ ์‚ฝ์ž…ํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ์ฑ„์ ํ• ๋•Œ ํ‹€๋ฆฐ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

โ€ฆ

์ด๋ฒˆ์ฝ”๋“œ๋Š” memsetํ•จ์ˆ˜ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์— ์•„์ง ์ต์ˆ™ํ•˜์ง€ ๋ชปํ•ด ๋ฒˆ์žกํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™์€๋ฐ ๊ธฐํšŒ๊ฐ€๋œ๋‹ค๋ฉด ์กฐ๊ธˆ๋” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋‹ค๋“ฌ์–ด์„œ ๋‹ค์‹œ ํ’€์–ด๋ณด๋Š” ๊ฒƒ๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ ๊ฐ™๋‹ค.