파이썬으로 숫자 제곱 구하기: 6가지 효과적인 방법
파이썬에서 숫자의 제곱을 구하는 방법은 다양합니다. 내장 함수부터 연산자, 자료구조 활용까지 6가지 대표적인 방식을 정리했습니다.
방법 1: pow() 함수 사용
math 모듈의 pow()는 거듭제곱을 계산합니다. 제곱은 지수를 2로 주면 됩니다.
# 구문: pow(밑, 지수)
result = pow(5, 2) # 25
# 사용자 입력 예제
base = input("밑이 될 정수를 입력하세요: ")
if base.isdigit():
base = int(base)
result = pow(base, 2)
print(f"제곱 결과: {result}")
else:
print("정수를 입력해주세요.")
장점: 부동소수점 연산 시 세 번째 인수(모듈로)로 큰 수 연산에 유용합니다. pow(2, 100, 1000)처럼 모듈로 연산 가능.
방법 2: 거듭제곱 연산자 ** 사용
파이썬의 지수 연산자로 가장 직관적입니다.
base = 5
exponent = 2
result = base ** exponent # 25
# 사용자 입력 예제
base = int(input("밑: "))
exponent = int(input("지수: "))
print(f"결과: {base ** exponent}")
장점: 별도 import 없이 사용 가능하며, 정수/부동소수점 모두 지원합니다.
방법 3: 단순 곱셈 (*) 사용
수학 정의 그대로 자기 자신을 곱합니다.
base = 5
result = base * base # 25
# 입력 검증 포함
base = input("정수 입력: ")
if base.isdigit():
base = int(base)
print(f"제곱: {base * base}")
장점: 가장 기본적이고 빠르며, 오버헤드가 없습니다.
방법 4: 리스트와 루프로 여러 숫자 제곱
리스트 컴프리헨션이나 map()을 활용하면 여러 숫자를 한 번에 처리할 수 있습니다.
numbers = [2, 4, 6, 8]
# 리스트 컴프리헨션 (권장)
squares = [n ** 2 for n in numbers]
print(squares) # [4, 16, 36, 64]
# map 함수 활용
squares = list(map(lambda x: x ** 2, numbers))
방법 5: while 루프로 연속된 숫자 제곱
카운터를 증가시키며 조건까지 반복합니다.
n = 1
while n <= 5:
print(f"{n}의 제곱: {n ** 2}")
n += 1
1의 제곱: 1
2의 제곱: 4
3의 제곱: 9
4의 제곱: 16
5의 제곱: 25
방법 6: NumPy 배열로 벡터화 연산
대량 데이터 처리 시 NumPy의 np.square()나 ** 연산이 압도적으로 빠릅니다.
import numpy as np
arr = np.array([2, 4, 6, 8])
squares = np.square(arr) # 또는 arr ** 2
print(squares) # [ 4 16 36 64]
장점: 벡터화 연산으로 루프 오버헤드 없이 C 레벨에서 고속 처리됩니다. 데이터 분석, 과학 연산 필수.
요약 및 권장 사항
| 방법 | 용도 | 성능 | 비고 |
x * x | 단일 정수 제곱 | 최고 | 가장 빠르고 직관적 |
x ** 2 | 일반적인 제곱/거듭제곱 | 빠름 | 음수, 부동소수점 모두 OK |
pow(x, 2) | 모듈로 연산 필요 시 | 보통 | 3번째 인수로 pow(x, y, mod) 가능 |
| 리스트 컴프리헨션 | 여러 숫자 일괄 처리 | 빠름 | 파이썬다운 코드 |
NumPy np.square() | 대용량 배열/행렬 연산 | 최고 (벡터화) | 과학 연산, 데이터 분석 표준 |
주의: 제곱(x²)과 제곱근(√x)은 완전히 다른 연산입니다. 제곱근은 math.sqrt(x) 또는 x ** 0.5로 구합니다.