이 글에서는 PL/SQL을 사용해 숫자가 회문(Palindrome)인지 확인하는 방법을 살펴봅니다. PL/SQL 코드에서는 관련된 선언부와 실행부가 하나의 블록으로 구성되며, 이 블록 안에 일련의 명령어들이 배치됩니다.
회문이란 어떤 수를 거꾸로 뒤집었을 때도 원래의 수와 동일한 값을 갖는 숫자를 의미합니다. 예를 들어 12321은 거꾸로 읽어도 12321이므로 회문이지만, 12345는 거꾸로 읽으면 54321이 되므로 회문이 아닙니다.
PL/SQL 회문 판별 코드
DECLARE
n number;
m number;
temp number:=0;
rem number;
BEGIN
n :=12321;
m :=n;
while n>0
loop
rem := mod(n,10);
temp := (temp*10)+rem;
n := trunc(n/10);
end loop;
if m = temp
then
dbms_output.put_line('Palindrome');
else
dbms_output.put_line('Not Palindrome');
end if;
END;
실행 결과
Palindrome
코드 동작 원리
위 코드의 핵심 로직은 다음과 같습니다.
- 변수 초기화: 검사할 숫자를
n에 저장하고, 나중에 비교하기 위해 원본 값을m에 복사해 둡니다.temp는 뒤집힌 숫자를 저장할 변수입니다. - 숫자 뒤집기:
mod(n, 10)함수로 마지막 자릿수를 하나씩 추출하고,temp := (temp*10) + rem연산을 통해 자릿수를 역순으로 쌓아 올립니다. 이후trunc(n/10)으로 이미 처리한 자릿수를 제거하며, 이 과정을n이 0이 될 때까지 반복합니다. - 비교 및 결과 출력: 반복문이 종료되면
temp에는 원래 숫자가 거꾸로 뒤집힌 값이 저장됩니다. 이 값이 원본m과 같으면 'Palindrome'을, 다르면 'Not Palindrome'을 출력합니다.
이처럼 PL/SQL의 기본적인 산술 함수와 반복문만으로도 회문 여부를 손쉽게 판별할 수 있습니다.