Concepts de base
ChatGPT는 쉬운 코딩 문제에서 뛰어난 성능을 보이지만, 문제 난이도가 높아질수록 해결 능력이 저하되며, 프롬프트 엔지니어링과 특정 언어에 대한 최적화가 필요하다.
Résumé
ChatGPT의 코딩 능력 평가: LeetCode를 통한 실증 분석
본 연구 논문에서는 LeetCode 플랫폼을 활용하여 다양한 난이도의 코딩 문제를 해결하는 ChatGPT-3.5의 효율성을 실증적으로 분석했습니다. 연구는 세 가지 주요 질문을 중심으로 진행되었습니다.
1. 난이도별 ChatGPT의 문제 해결 능력
- ChatGPT는 쉬운 문제 (92%), 중간 문제 (79%)에서 높은 성공률을 보였지만, 어려운 문제 (51%)에서는 성능이 크게 저하되었습니다.
- 문제 난이도가 높아질수록 ChatGPT가 모든 테스트 케이스를 통과하는 비율이 감소했습니다.
- 쉬운 문제의 경우, 코드 길이가 짧더라도 정확도가 높았지만, 중간 및 어려운 문제에서는 ChatGPT가 비효율적인 Brute Force 방식을 사용하여 코드 길이가 길어지고 정확도가 떨어지는 경향을 보였습니다.
2. 프롬프트 엔지니어링의 영향
- 세 가지 프롬프트 엔지니어링 기법 (Chain-of-Thought, 실패한 테스트 케이스 제공, GPT-4 모델 사용) 모두 ChatGPT의 성능 향상에 기여했습니다.
- 특히, ChatGPT가 처음에 실패한 테스트 케이스를 프롬프트에 추가하는 것이 모든 난이도의 문제에서 효과적인 개선 방법임을 확인했습니다.
- GPT-4는 모든 난이도에서 GPT-3.5-turbo보다 뛰어난 성능을 보였으며, 특히 어려운 문제에서 그 차이가 두드러졌습니다.
- Claude 3 Sonnet과 Gemini 1.0 Pro도 테스트되었지만, GPT-4가 전반적으로 가장 뛰어난 성능을 보였습니다.
3. 프로그래밍 언어 지원
- ChatGPT는 Python과 Java에서 높은 성능을 보였지만, C++에서는 상대적으로 낮은 성능을 보였습니다.
- Elixir, Erlang, Racket과 같은 함수형 프로그래밍 언어에서는 문제 해결에 어려움을 겪었습니다.
- ChatGPT는 해시 테이블, 검색, 분할 정복 문제 유형에서 높은 성공률을 보였지만, 데이터베이스, 동적 프로그래밍, 탐욕 알고리즘 문제 유형에서는 어려움을 겪었습니다.
결론 및 시사점
본 연구는 ChatGPT가 쉬운 코딩 문제 해결에 유용한 도구가 될 수 있지만, 복잡한 문제 해결 능력은 여전히 제한적임을 보여줍니다. 프롬프트 엔지니어링과 특정 언어에 대한 추가적인 최적화를 통해 ChatGPT의 성능을 향상시킬 수 있을 것으로 예상됩니다.
Stats
ChatGPT-3.5-turbo는 LeetCode의 쉬운 문제 중 92%를 성공적으로 해결했습니다.
ChatGPT-3.5-turbo는 LeetCode의 중간 난이도 문제 중 79%를 성공적으로 해결했습니다.
ChatGPT-3.5-turbo는 LeetCode의 어려운 문제 중 51%를 성공적으로 해결했습니다.
Chain-of-Thought 프롬프트 엔지니어링은 쉬운 문제에서 29%, 중간 문제에서 19%, 어려운 문제에서 14%의 성능 향상을 보였습니다.
실패한 테스트 케이스를 프롬프트에 추가하면 쉬운 문제에서 38%, 중간 문제에서 60%, 어려운 문제에서 45%의 성능 향상을 보였습니다.
GPT-4는 쉬운 문제에서 33%, 중간 문제에서 58%, 어려운 문제에서 52%의 성능 향상을 보였습니다.
C++는 ChatGPT가 Python으로 성공적으로 해결한 10개 문제 중 5개만 해결했습니다.
Java는 ChatGPT가 Python으로 성공적으로 해결한 10개 문제 중 7개를 해결했습니다.
Elixir, Erlang, Racket에서는 20개의 테스트 문제 중 어떤 것도 해결하지 못했습니다.