크기가 n인 배열 arr[]이 주어지면 우리의 임무는 배열이 회문인지 아닌지를 찾는 것입니다. 회문은 MADAM, NAMAN 등과 같이 앞뒤로 읽을 수 있는 시퀀스입니다.
따라서 배열이 회문인지 확인하려면 다음과 같이 배열을 앞뒤로 순회할 수 있습니다. -
예시
Input: arr[] = {1, 0, 0, 1} Output: Array is palindrome Input: arr[] = {1, 2, 3, 4, 5} Output: Array is not palindrome
아래에 사용된 접근 방식은 다음과 같습니다. -
시작부터 끝에서 배열이 모두 같아질 때까지 배열을 탐색하고 시작의 요소가 끝의 요소와 같은지 확인하고 배열은 회문이고 그렇지 않으면 배열은 회문이 아닙니다.
알고리즘
Start In function int pallindrome(int arr[], int n) Step 1-> initialize i, j, flag and assign flag as 0 Step 2-> Loop For i = 0, j=n-1 and i< n/2, j>=n/2 and i++, j-- If arr[i]!=arr[j] then, Set flag as 1 Break End If End Loop Step 3-> If flag == 1 then, Return 0 Step 4-> Else Return 1 End function In function int main(int argc, char const *argv[]) Step 1-> Declare and initialize arr[] as {1, 0, 2, 3, 2, 2, 1} Step 2-> Declare and initialize n as sizeof(arr)/sizeof(arr[0]) Step 3-> If pallindrome(arr, n) then, Print "Array is pallindrome " End if Step 4-> Else Print "Array is not pallindrome " Return 0 End main Stop
예시
#include <stdio.h> int pallindrome(int arr[], int n) { int i, j, flag = 0; for(i = 0, j=n-1; i< n/2, j>=n/2; i++, j--) { if(arr[i]!=arr[j]) { flag = 1; break; } } if (flag == 1) return 0; else return 1; } int main(int argc, char const *argv[]) { int arr[] = {1, 0, 2, 3, 2, 2, 1}; int n = sizeof(arr)/sizeof(arr[0]); if(pallindrome(arr, n)) { printf("Array is pallindrome\n"); } else printf("Array is not pallindrome\n"); return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Array is not palindrome