chatGPT로 백준 문제 풀어보셨나요?

Moon·2022년 12월 20일
0
post-thumbnail
post-custom-banner

알고리즘📋 공부를 하다가 문득, 요즘 등장한 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)입니다.

profile
안녕하세요. Moon입니다!
post-custom-banner

0개의 댓글