알고리즘📋 공부를 하다가 문득, 요즘 등장한 chatGPT의 성능이 궁금해졌습니다. chatGPT는 백준 문제를 얼마나 잘 풀까요?
브론즈1 난이도의 소인수분해 프로그램을 작성하도록 요청했습니다.
문제 링크 : 소인수분해 백준11653
저는 어려움없이 채팅을 통해, 소인수분해하는 프로그램을 요청하였고 다음과 같은 답변을 받았습니다.
chatGPT의 코드 전문👇👇
def prime_factorization(n):
# Create an empty list to store the prime factors
prime_factors = []
# Divide the number by 2 as many times as possible
while n % 2 == 0:
prime_factors.append(2)
n = n / 2
# Divide the number by odd numbers until it is fully factorized
i = 3
while i <= n:
while n % i == 0:
prime_factors.append(i)
n = n / i
i += 2
return prime_factors
# Test the function
print(prime_factorization(100)) # Output: [2, 2, 5, 5]
print(prime_factorization(81)) # Output: [3, 3, 3, 3]
print(prime_factorization(7)) # Output: [7]
15초도 안 걸려서 나온 코드를 백준 정답 양식에 맞추어 제출하였습니다.
Python3으로 작성한 코드는 896ms 시간이 나왔습니다.
사실 여기까지만 보았을 때는 그냥 그런 친구구나.. 하고 넘어가려 했지만...
'무언가 chatGPT는 더 해낼 수 있지 않을까?' 라는 생각이 들었습니다. 위 코드를 보았을 때, while문에서 i를 n까지 계산할 필요 없이 루트값까지만 한다면 시간복잡도를 줄일 수 있을 거 같았습니다.
바로 chatGPT 돌려봅시다.
def prime_factorization(n):
# Create an empty list to store the prime factors
prime_factors = []
# Divide the number by 2 as many times as possible
while n % 2 == 0:
prime_factors.append(2)
n = n / 2
# Divide the number by odd numbers until it is fully factorized
i = 3
while i * i <= n:
if n % i == 0:
prime_factors.append(i)
n = n / i
else:
i += 2
# If the number is greater than 2, it is a prime number itself
if n > 2:
prime_factors.append(int(n))
return prime_factors
# Test the function
print(prime_factorization(100)) # Output: [2, 2, 5, 5]
print(prime_factorization(81)) # Output: [3, 3, 3, 3]
print(prime_factorization(7)) # Output: [7]
놀랍게도.. chatGPT는 앞서 작성한 코드를 modified version까지 만들어주었습니다. 앞서 896ms가 걸렸던 이 문제는
보이시나요...? 896ms -> 44ms로 걸린 시간을 낮췄습니다.👏👏
물론 쉬운 문제를 제시한 것도 있지만, AI에 대한 지식이 얕고 알고리즘 공부를 하고 있는 저에게는 매우 놀랍고 흥미로운 일이었습니다...🤸🤸
개발자로서 공부를 하면서 이런 기술들을 접하게 되면, 이런 것들을 내것처럼 잘 사용할 수 있는 레벨이 되면 더욱 재밌지 않을까 싶습니다!!
혹시 사용해보고 싶으신 분은 아래 링크를 이용하시면 됩니다.
chatGPT 링크(chatGPT)입니다.