이 글에서는 주어진 행(row)과 열(column)의 개수를 바탕으로, 첫 번째 행, 첫 번째 열, 마지막 행, 마지막 열에는 1을 출력하고 나머지 내부 요소에는 0을 출력하는 박스(Box) 패턴을 만드는 방법을 알아봅니다.
문제 예시
입력 : rows = 5, columns = 4
출력 :
1 1 1 1
1 0 0 1
1 0 0 1
1 0 0 1
1 1 1 1
입력 : rows = 8, columns = 9
출력 :
1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1해결 접근 방법
가장 간단한 방법은 모든 행과 열을 순회하면서 각 요소가 첫 번째 행, 마지막 행, 첫 번째 열, 마지막 열 중 하나에 해당하는지 확인하는 것입니다. 해당 위치라면 '1'을 출력하고, 그렇지 않아 테두리 내부에 있는 경우에는 '0'을 출력하면 됩니다. 이 방식을 사용하면 원하는 형태의 박스 패턴을 손쉽게 만들 수 있습니다.
C++ 구현 코드
using namespace std;
#include <bits/stdc++.h>
// 패턴을 출력하는 함수
void create_pattern (int rows, int columns) {
int i, j;
for (i = 1; i <= rows; i++) {
for (j = 1; j <= columns; j++) {
// 요소가 첫/마지막 행 또는 첫/마지막 열에 있는 경우
if (i == 1 || i == rows || j == 1 || j == columns) {
cout << " 1";
} else {
cout << " 0";
}
}
cout << "\n";
}
return;
}
int main () {
int no_of_rows = 7;
int no_of_columns = 8;
create_pattern (no_of_rows, no_of_columns);
return 0;
}실행 결과
1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
코드 설명
- 행의 개수와 열의 개수를 인자로 전달하며
create_pattern()함수를 호출합니다. - 외부 반복문
for (i = 1; i <= rows; i++)는 1부터 rows까지 순회하며 각 행을 처리합니다. - 내부 반복문
for (j = 1; j <= columns; j++)는 1부터 columns까지 순회하며 각 열을 처리합니다. - 조건식
(i == 1 || i == rows || j == 1 || j == columns)을 통해 해당 요소가 첫/마지막 행 또는 첫/마지막 열에 있는지 검사하고, 참이면 '1', 거짓이면 '0'을 출력합니다.
마무리
이번 글에서는 주어진 행과 열의 개수를 이용해 테두리는 1, 내부는 0으로 채워진 박스 패턴을 출력하는 문제를 해결했습니다. C++ 프로그램으로 구현했지만, 동일한 로직은 C, Java, Python 등 다른 프로그래밍 언어로도 충분히 작성할 수 있습니다. 시간 복잡도는 O(rows × columns)로, 입력 크기에 비례하여 선형적으로 증가합니다. 이 글이 여러분의 학습에 도움이 되기를 바랍니다.