주어진 변수가 3의 거듭제곱인지 확인해야 하는 경우, 정수를 매개변수로 받는 check_power_of_3라는 함수를 정의하면 됩니다. 이 함수는 나머지 연산자(%)와 몫 연산자(//)를 활용해 검사를 수행하고, 그 결과에 따라 True 또는 False를 반환합니다.
예제 코드
다음은 실제 동작을 보여주는 예제입니다.
def check_power_of_3(my_val):
if (my_val == 0):
return False
while (my_val != 1):
if (my_val % 3 != 0):
return False
my_val = my_val // 3
return True
my_num = 81
print("확인할 숫자 : ")
print(my_num)
if(check_power_of_3(my_num)):
print(my_num, '은(는) 3의 거듭제곱입니다.')
else:
print(my_num, '은(는) 3의 거듭제곱이 아닙니다.')실행 결과
확인할 숫자 : 81 81 은(는) 3의 거듭제곱입니다.
코드 설명
check_power_of_3라는 이름의 함수를 정의하고, 검사할 숫자를 매개변수로 전달받습니다.
입력값이 0이면 3의 거듭제곱이 될 수 없으므로 False를 반환합니다.
값이 1이 아닌 동안 반복문을 실행하며, 나머지 연산자(%)로 3으로 나눈 나머지가 0인지 확인합니다. 나머지가 0이 아니라면 False를 반환합니다.
나머지가 0이라면 몫 연산자(//)를 사용해 값을 3으로 나누고 다시 검사를 진행합니다.
모든 과정을 통과해 값이 1이 되면 True를 반환하여 3의 거듭제곱임을 의미합니다.
함수 외부에서 검사할 숫자(여기서는 81)를 정의하고 콘솔에 출력합니다.
해당 숫자를 인자로 전달하여 함수를 호출하고, 반환된 결과에 따라 적절한 메시지를 출력합니다.
참고 사항
이 알고리즘은 시간 복잡도가 O(log₃n)으로 효율적입니다. 또한 음수나 1 미만의 값도 자연스럽게 처리되며, 1은 3⁰ = 1이므로 True를 반환한다는 점도 기억해 두면 좋습니다.