Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

PL/SQL로 숫자 내 홀수·짝수 자릿수 개수 구하는 방법


자릿수로 구성된 양의 정수가 주어졌을 때, PL/SQL을 사용하여 그 숫자 안에 포함된 홀수 자릿수와 짝수 자릿수의 개수를 각각 계산하는 것이 이번 글의 목표입니다.

PL/SQL이란?

PL/SQL은 SQL에 절차적 프로그래밍 언어의 특성을 결합한 확장 언어입니다. 1990년대 초 오라클(Oracle Corporation)이 SQL만으로는 처리하기 어려운 복잡한 비즈니스 로직을 구현할 수 있도록 SQL의 기능을 강화하기 위해 개발했습니다.

PL/SQL은 SQL과 Java와 함께 오라클 데이터베이스에 내장된 세 가지 핵심 프로그래밍 언어 중 하나로 꼽힙니다.

문제 예시

입력 − int number = 23146579

출력

홀수 자릿수의 개수 : 5
짝수 자릿수의 개수 : 3

설명 − 주어진 숫자에서 2, 4, 6은 짝수 자릿수이므로 짝수 자릿수는 총 3개이며, 3, 1, 5, 7, 9는 홀수 자릿수이므로 홀수 자릿수는 총 5개입니다.

입력 − int number = 4567228

출력

홀수 자릿수의 개수 : 2
짝수 자릿수의 개수 : 5

설명 − 주어진 숫자에서 5와 7은 홀수 자릿수이므로 홀수 자릿수는 총 2개이며, 4, 6, 2, 2, 8은 짝수 자릿수이므로 짝수 자릿수는 총 5개입니다.

프로그램의 접근 방식

  • PL/SQL의 NUMBER 데이터 타입 정수형 변수에 숫자를 입력받습니다.

  • 저장 가능한 최대 크기를 정의하는 VARCHAR(50) 타입의 length 변수를 선언합니다.

  • 홀수 자릿수 개수와 짝수 자릿수 개수를 저장할 두 변수를 선언하고 초기값을 0으로 설정합니다.

  • FOR 루프를 1부터 숫자의 길이까지 반복하면서 숫자를 전달합니다.

  • 루프 내부에서 substr(number, i, 1) 함수를 사용해 한 자리씩 잘라내어 length 변수에 저장합니다.

  • IF 조건문으로 length를 2로 나눈 나머지(mod)가 0이 아니면 홀수 자릿수 카운트를 1 증가시킵니다.

  • 그렇지 않으면 짝수 자릿수 카운트를 1 증가시킵니다.

  • 최종 결과를 출력합니다.

예제 코드

DECLARE
    digits NUMBER := 23146579;
    length VARCHAR2(50);
    count_odd NUMBER(10) := 0;
    count_even NUMBER(10) := 0;
BEGIN
    FOR i IN 1..Length(digits)
    LOOP
        length := Substr(digits, i, 1);
        IF mod(length, 2) != 0 THEN
            count_odd := count_odd + 1;
        ELSE
            count_even := count_even + 1;
        END IF;
    END LOOP;
    dbms_output.Put_line('홀수 자릿수의 개수 : ' || count_odd);
    dbms_output.Put_line('짝수 자릿수의 개수 : ' || count_even);
END;

핵심 함수 정리

Length(digits) − 숫자의 전체 자릿수를 반환하여 루프의 반복 횟수를 결정합니다.

Substr(digits, i, 1) − i번째 위치에서 한 글자를 추출해 각 자릿수를 개별적으로 검사할 수 있게 합니다.

mod(length, 2) − 해당 자릿수를 2로 나눈 나머지를 구합니다. 나머지가 0이 아니면 홀수, 0이면 짝수로 판별합니다.

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

홀수 자릿수의 개수 : 5
짝수 자릿수의 개수 : 3