PL/SQL은 SQL의 강력한 기능과 절차적 프로그래밍 명령어를 하나로 결합한 블록 구조 언어입니다. 이 글에서는 주어진 숫자를 거꾸로 뒤집는(반전시키는) PL/SQL 프로그램을 작성하는 방법을 알아보겠습니다.
문제 정의
먼저 예제를 통해 문제를 살펴보겠습니다.
입력 : 98765
출력 : 56789
설명 : 98765를 반전시킨 숫자는 56789입니다.
입력 : 56784
출력 : 48765
설명 : '56784'를 반전시킨 숫자는 '48765'입니다.
해결 접근 방식
숫자를 반전시키는 핵심 아이디어는 각 자릿수를 하나씩 분리한 후, 역순으로 다시 조립하는 것입니다. 다음 단계를 따릅니다.
- 1단계:
num/10의 나머지(MOD 연산)를 구하여 숫자의 마지막 자릿수를 추출합니다. - 2단계: 추출한 마지막 자릿수를 결과를 저장할 변수
reverse_num에 추가합니다. 기존 값에 10을 곱한 후 더하면 자릿수가 왼쪽으로 밀려나게 됩니다. - 3단계: 원본 숫자
num이 0이 되었는지 확인합니다.- 0이 아니라면 → 1단계로 돌아가 반복합니다.
- 0이라면 → 4단계로 이동합니다.
- 4단계: 최종적으로 반전된 숫자
reverse_num을 출력합니다.
구현 코드 예제
위 알고리즘을 PL/SQL로 구현한 코드는 다음과 같습니다.
DECLARE
num number;
reverse_num number := 0;
begin
num := 98765;
while num > 0
loop
reverse_num := (reverse_num * 10) + mod(num, 10);
num := trunc(num / 10);
end loop;
dbms_output.put_line(' Reversed number is : ' || reverse_num);
end;
코드 동작 원리
mod(num, 10) 함수는 숫자를 10으로 나눈 나머지, 즉 마지막 자릿수를 반환합니다. 그리고 trunc(num / 10) 함수는 소수점 이하를 버린 몫을 반환하여 마지막 자릿수를 제거한 값을 만들어 줍니다. 이 두 연산이 WHILE 루프 안에서 반복되면서 숫자가 한 자릿수씩 처리되고, reverse_num * 10을 통해 새 자릿수가 계속 오른쪽에 추가됩니다.
실행 결과
Reversed number is: 56789
마무리
이번 글에서는 영어 문장을 쓰듯 직관적으로 시스템에 명령할 수 있어 배우기 쉬운 PL/SQL 프로그래밍 언어에 대해 살펴보았습니다. 또한 MOD와 TRUNC 함수를 활용해 WHILE 루프로 숫자를 반전시키는 실용적인 예제를 함께 다루었습니다. 이러한 자릿수 조작 기법은 회문(palindrome) 판별, 자릿수 합계 계산 등 다양한 문제에도 응용할 수 있으니 꼭 기억해 두시기 바랍니다. 이 글이 여러분의 학습에 도움이 되기를 바랍니다.