PS (C, C++)

[백준/C & C++] 5354 J박스

최연재 2022. 10. 4. 10:21

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

 

5354번: J박스

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 박스의 크기가 주어진다. 박스의 크기는 10보다 작거나 같다.

www.acmicpc.net

코드 (C)

#include <stdio.h>

void printPattern(int n)
{
	int i = 0;
	for (int i = 0; i < n; i++)
	{
		if (i == 0 || i == n - 1) for (int j = 0; j < n; j++) printf("#");
		else
		{
			printf("#");
			for (int j = 0; j < n - 2; j++) printf("J");
			printf("#");
		}
		printf("\n");
	}
	printf("\n");
}

int main()
{
	int n, a;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a);
		printPattern(a);
	}
	return 0;
}

코드 (C++)

#include <iostream>
using namespace std;

void printPattern(int n)
{
	int i = 0;
	for (int i = 0; i < n; i++)
	{
		if (i == 0 || i == n - 1) for (int j = 0; j < n; j++) cout << '#';
		else
		{
			cout << '#';
			for (int j = 0; j < n - 2; j++) cout << 'J';
			cout << '#';
		}
		cout << '\n';
	}
	cout << '\n';
}

int main()
{
	int n, a;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cin >> a;
		printPattern(a);
	}
	return 0;
}

코드설명 

반복 횟수를 입력받고 그 횟수만큼 반복문을 돈다. 

반복문 내에서는 박스의 크기를 입력받고 나서 printPattern이라는 함수를 호출해서 박스를 출력한다. 

 

printPattern 함수는 박스의 크기를 인수로 받는다. 

박스의 크기만큼 반복문을 도는데, 첫 줄과 마지막 줄은 박스의 크기만큼 #이 반복되어 출력되므로 if문에서 첫 줄이거나 마지막 줄인 경우에는 박스의 크기만큼 반복해서 #을 출력한다. 

 

만약 첫줄이나 마지막 줄이 아닌 경우에는 문장의 첫 글자와 마지막 글자만 #이고,  첫 글자나 마지막 글자가 아닌 경우에는 J를 출력한다. 따라서 else문 내에서 첫 글자와 마지막 글자는 #으로 출력하고 그 사이에는 n-2번 반복문을 돌면서 J를 출력한다. 

 

for문 내에 줄바꿈기호를 적어서 박스의 한 줄을 완성한다.  for문 밖의 줄바꿈기호는 박스와 박스 사이에 한 줄을 띄울 때 사용한다. 

느낀 점

주어진 예제를 보고 패턴을 파악해서 코드를 작성했고, 바로 풀었다. 

'PS (C, C++)' 카테고리의 다른 글

[백준/C & C++] 2914 저작권  (2) 2022.10.04
[백준/C & C++] 2798 블랙잭  (2) 2022.10.04
[백준/C & C++] 2576 홀수  (0) 2022.09.19
[백준/C & C++] 1233 주사위  (0) 2022.09.19
[백준/C & C++] 3034 앵그리 창영  (0) 2022.09.15