정수 n이 하나 주어졌을 때, 이를 이용해 육각형 모양의 패턴을 생성하고 화면에 출력하는 것이 이번 글의 목표입니다.
예시
입력: n = 5 출력:

입력: n = 4 출력:

문제 해결 접근 방식
육각형 패턴을 한 번에 그리기는 어렵기 때문에, 패턴을 세 구역으로 나누어 단계별로 출력하는 방법을 사용합니다.
- 사용자로부터 정수 'n'을 입력받습니다.
- 전체 패턴을 윗부분(upper), 중간부분(middle), 아랫부분(lower)의 세 구역으로 나눕니다.
- 윗부분 출력: 루프 변수 i를 0부터 n 미만까지 1씩 증가시키며 각 행을 출력합니다.
- 중간부분 출력: 루프 변수 m을 0부터 n-2 미만까지 1씩 증가시키며 좌우 테두리만 별표로 채운 행을 반복 출력합니다.
- 아랫부분 출력: 루프 변수 h를 res(n-1)부터 시작해 0 이상일 때까지 1씩 감소시키며 윗부분과 대칭 형태로 출력합니다.
- 각 위치마다 조건을 검사하여 별표(*) 또는 공백을 출력합니다.
알고리즘
START
Step 1 -> 육각형 패턴을 출력할 함수 선언
void pattern(int n)
int len = 2 * n - 1 로 선언 및 초기화
Loop For int i = 0, i < n, i++ // 윗부분 출력
int temp = i + n 으로 선언 및 초기화
Loop For int k = 0, k < temp, k++
IF ((k == n + i - 1) || (k == n - i - 1))
* 출력
ELSE
공백 출력
END IF
개행(\n) 출력
End Loop
End Loop
Loop For int m = 0, m < n - 2, m++ // 중간부분 출력
Loop For int j = 0, j < len, j++
if (j == 0 || j == len - 1)
* 출력
ELSE
공백 출력
END IF
End Loop
개행(\n) 출력
End Loop
int res = n - 1 로 선언 및 초기화
Loop For int h = res, h >= 0, h-- // 아랫부분 출력
int temp2 = h + n 으로 선언 및 초기화
Loop For int k = 0, k < temp2, k++
if ((k == n + h - 1) || (k == n - h - 1))
* 출력
ELSE
공백 출력
END IF
End Loop
개행(\n) 출력
End Loop
End Function
Step 2 -> main() 함수에서
int n = 5 선언
pattern(n) 호출
STOPC 코드 구현
위 알고리즘을 실제 C 코드로 구현하면 다음과 같습니다.
#include <stdio.h>
// 육각형 패턴을 출력하는 프로그램
void pattern(int n) {
int len = 2 * n - 1;
// 패턴의 윗부분을 출력하는 for 루프
for (int i = 0; i < n; i++) {
int temp = i + n;
for (int k = 0; k < temp; k++) {
if ((k == n + i - 1) || (k == n - i - 1))
printf("*");
else
printf(" ");
}
printf("\n");
}
// 패턴의 중간부분을 출력하는 for 루프
for (int m = 0; m < n - 2; m++) {
for (int j = 0; j < len; j++) {
if (j == 0 || j == len - 1)
printf("*");
else
printf(" ");
}
printf("\n");
}
// 패턴의 아랫부분을 출력하는 for 루프
int res = n - 1;
for (int h = res; h >= 0; h--) {
int temp2 = h + n;
for (int k = 0; k < temp2; k++) {
if ((k == n + h - 1) || (k == n - h - 1))
printf("*");
else
printf(" ");
}
printf("\n");
}
}
int main() {
int n = 5;
pattern(n);
return 0;
}실행 결과
n = 5를 입력했을 때 위 프로그램을 실행하면 다음과 같은 육각형 패턴이 출력됩니다.

코드 동작 원리 요약
- 윗부분: 각 행에서 별표가 출력되는 위치는 k == n - i - 1(왼쪽 대각선)과 k == n + i - 1(오른쪽 대각선) 두 곳입니다. i가 커질수록 두 별표 사이의 간격이 넓어져 위쪽 뾰족한 부분이 만들어집니다.
- 중간부분: len = 2n - 1 길이의 행에서 첫 번째 칸(j == 0)과 마지막 칸(j == len - 1)만 별표를 출력해 육각형의 좌우 옆면을 형성합니다.
- 아랫부분: 윗부분과 동일한 조건식을 역순(h 감소)으로 적용해 아래쪽 뾰족한 부분을 완성합니다.