주어진 숫자가 4의 거듭제곱인지 확인해야 하는 경우, 정수를 매개변수로 받는 check_power_of_4라는 이름의 메서드를 정의하면 됩니다. 이 메서드는 나머지 연산자(%)와 나눗셈 연산자(//)를 활용해 조건을 검사한 뒤, 결과에 따라 True 또는 False를 반환합니다.
예시
아래는 실제 동작을 보여주는 예시 코드입니다.
def check_power_of_4(my_val):
if (my_val == 0):
return False
while (my_val != 1):
if (my_val % 4 != 0):
return False
my_val = my_val // 4
return True
my_num = 64
print("The number to be checked is : ")
print(my_num)
if(check_power_of_4(my_num)):
print(my_num, 'is a power of 4..')
else:
print(my_num, 'is not a power of 4..')
출력 결과
The number to be checked is : 64 64 is a power of 4..
코드 설명
check_power_of_4라는 이름의 메서드를 정의하고, 검사할 숫자를 매개변수로 전달받습니다.
입력값이 0이면 4의 거듭제곱이 될 수 없으므로 False를 반환합니다.
값이 1이 아닌 동안 반복문을 돌며, 나머지 연산자(%)로 4로 나눈 나머지가 0이 아닌 경우 False를 반환합니다.
나머지가 0이라면 나눗셈 연산자(//)를 사용해 값을 4로 나누고, 값이 1이 될 때까지 이 과정을 반복합니다.
모든 검사를 통과하면 최종적으로 True를 반환하여 해당 숫자가 4의 거듭제곱임을 의미합니다.
메서드 외부에서 검사할 숫자(64)를 정의하고 콘솔에 출력합니다.
정의된 숫자를 인자로 넘겨 메서드를 호출하고, 그 결과에 따라 적절한 문장을 출력합니다.
참고 사항
이 알고리즘은 숫자를 4로 계속 나누기 때문에 시간 복잡도는 O(log n)입니다. 또한 음수나 1 미만의 값은 4의 거듭제곱이 아니므로, 필요에 따라 입력값 범위 검사를 추가하면 더욱 견고한 코드가 됩니다.