배열(Array)은 서로 관련된 여러 데이터를 하나의 공통된 이름으로 묶어 저장하는 기본적인 자료 구조입니다. 같은 자료형의 값들을 연속된 메모리 공간에 순차적으로 보관하며, 인덱스를 통해 각 요소에 접근할 수 있습니다.
배열 선언 문법
C 언어에서 배열을 선언하는 기본 문법은 다음과 같습니다.
datatype array_name [size];
배열 초기화
배열은 선언과 동시에 초기화할 수도 있습니다.
int a[5] = { 10, 20, 30, 40, 50 };배열 뒤집기의 원리
배열을 뒤집는다는 것은 첫 번째 요소와 마지막 요소의 위치를 서로 맞바꾸는 방식으로 전체 순서를 반대로 만드는 것을 의미합니다. 이때 주로 교환(swap) 기법이나 역순 복사 기법을 활용합니다.
예를 들어, 네 개의 정수 요소를 가진 배열 'P'가 다음과 같다고 가정해 보겠습니다.
P[0] = 1, P[1] = 2, P[2] = 3, P[3] = 4
배열을 뒤집으면 요소의 순서가 완전히 반대가 됩니다.
P[0] = 4, P[1] = 3, P[2] = 2, P[3] = 1
배열 뒤집기 C 프로그램 예제
다음은 두 개의 배열을 사용해 원본 배열을 역순으로 복사한 뒤, 다시 원본 배열에 덮어써서 뒤집는 C 프로그램입니다.
#include <stdio.h>
int main(){
int num, i, j, array1[50], array2[50];
printf("Enter no of elements in array\n");
scanf("%d", &num);
printf("Enter array elements\n");
for (i = 0; i < num ; i++)
scanf("%d", &array1[i]);
// 배열 요소를 역순으로 복사
for (i = num - 1, j = 0; i >= 0; i--, j++)
array2[j] = array1[i];
// 뒤집힌 배열을 원본 배열에 다시 복사
for (i = 0; i < num; i++)
array1[i] = array2[i];
printf("The reversed array:\n");
for (i = 0; i< num; i++)
printf("%d\n", array1[i]);
return 0;
}코드 동작 설명
이 프로그램의 로직은 세 단계로 나눌 수 있습니다.
1단계: 사용자로부터 배열의 크기와 각 요소 값을 입력받아 array1에 저장합니다.
2단계: 마지막 인덱스부터 첫 번째 인덱스까지 거꾸로 순회하면서 array2에 차례대로 복사합니다. 이 과정에서 배열이 뒤집힙니다.
3단계: 뒤집힌 array2의 내용을 다시 array1에 복사하여 최종 결과를 출력합니다.
실행 결과
프로그램을 실행하면 다음과 같은 출력을 확인할 수 있습니다.
Enter no of elements in array 4 Enter array elements 20 50 60 70 The reversed array: 70 60 50 20
입력한 배열 [20, 50, 60, 70]이 성공적으로 [70, 60, 50, 20]으로 뒤집혀 출력되는 것을 확인할 수 있습니다. 참고로 추가 배열 없이 원본 배열 안에서 첫 번째와 마지막 요소를 맞바꾸는 제자리(in-place) 교환 방식을 사용하면 메모리를 더 효율적으로 활용할 수 있습니다.