문제 개요
이 문제에서는 하나의 숫자 n이 주어집니다. 우리의 과제는 PL/SQL을 사용하여 이 숫자의 첫 번째 자릿수와 마지막 자릿수의 합을 구하는 프로그램을 작성하는 것입니다.
해결 방법을 살펴보기 전에, PL/SQL에 대해 간단히 정리하고 넘어가겠습니다.
PL/SQL이란?
PL/SQL은 SQL과 프로그래밍 언어의 절차적 기능을 결합한 언어입니다. 일반적인 SQL 쿼리만으로는 구현하기 어려운 변수 선언, 조건 분기, 반복 처리 같은 로직을 데이터베이스 내부에서 직접 수행할 수 있도록 도와줍니다.
문제 이해하기
예시를 통해 문제를 좀 더 명확하게 이해해 보겠습니다.
- 입력: n = 31415
- 출력: 8
- 설명: 첫 번째 자릿수 = 3, 마지막 자릿수 = 5, 따라서 합계 = 8
해결 접근 방법
이 문제를 해결하려면 숫자 n에서 첫 번째 자릿수와 마지막 자릿수를 추출한 뒤, 두 값을 더해 출력하면 됩니다.
자릿수 추출에는 SUBSTR() 함수를 사용합니다. 첫 번째 자릿수는 문자열의 첫 문자에서, 마지막 자릿수는 문자열 길이를 이용해 마지막 문자에서 가져올 수 있습니다. 참고로 SUBSTR() 함수는 문자열에 적용되므로, 숫자는 먼저 TO_CHAR() 함수로 문자열로 변환한 후 처리하는 것이 좋습니다.
예제 코드
다음은 위 해결 방법의 동작을 보여주는 프로그램입니다.
DECLARE
n INTEGER := 31415;
str VARCHAR2(20);
firstDigit INTEGER := 0;
lastDigit INTEGER := 0;
s INTEGER;
BEGIN
IF n > 9 THEN
str := TO_CHAR(n);
firstDigit := SUBSTR(str, 1, 1);
lastDigit := SUBSTR(str, LENGTH(str), 1);
s := firstDigit + lastDigit;
ELSE
s := n;
END IF;
DBMS_OUTPUT.PUT_LINE('숫자의 첫 번째 자릿수와 마지막 자릿수의 합은 ' || s);
END;
-- 프로그램 종료
출력 결과
숫자의 첫 번째 자릿수와 마지막 자릿수의 합은 8
코드 설명
코드의 동작 흐름은 다음과 같습니다.
- 먼저 숫자 n이 한 자리 수인지 확인합니다. 한 자리 수라면 첫 자릿수와 마지막 자릿수가 같으므로 그 값 자체가 곧 합이 됩니다.
- 두 자리 이상의 숫자라면 TO_CHAR()로 문자열로 변환한 뒤, SUBSTR(str, 1, 1)로 첫 번째 자릿수를, SUBSTR(str, LENGTH(str), 1)로 마지막 자릿수를 각각 추출합니다.
- 두 자릿수를 더한 값을 변수 s에 저장하고, DBMS_OUTPUT.PUT_LINE을 통해 결과를 출력합니다.
이처럼 PL/SQL의 문자열 함수와 조건문을 활용하면 자릿수 연산을 손쉽게 처리할 수 있습니다.