180 판독값 새로운 역사

2025년 Leetcode 문제 해결에 대한 LLM 테스트

~에 의해 Alex Svetkin9m2025/04/08
Read on Terminal Reader

너무 오래; 읽다

최첨단 "추론" LLM은 상당한 양의 Leetcode 어려운 알고리즘 문제를 해결할 수 있습니다.
featured image - 2025년 Leetcode 문제 해결에 대한 LLM 테스트
Alex Svetkin HackerNoon profile picture
0-item
1-item

1년 전 나의 벤치마크는 Large Language Models (LLMs)가 Leetcode에서 알고리즘 코딩 문제를 해결할 수 있음을 보여주었습니다. 그러나 그들의 능력은 잘 알려진, "대중적인" 문제의 하위 세트에 한정되었습니다. 교육 데이터 세트에 결코 포함되지 않은 새로운 문제는 어려움을 초래했습니다. 가장 쉬운 문제는 대부분 모델에 의해 해결되었지만 가장 어려운 문제는 도달할 수 없었습니다.

나의 벤치마크내 벤치마크

그 이후로, 오픈 AI, Anthropic, 구글은 그들의 모델의 향상된 버전을 출시하고 Deepseek 및 xAI와 같은 새로운 플레이어가 등장했습니다.많은 모델은 이제 코드를 작성할 수 있다고 마케팅, 이전에는 그렇지 않았습니다.나는 새로운 알고리즘 문제를 해결할 수있는 능력이 향상되었는지 여부를 알아 내기 위해이 최첨단 LLM을 비교하려고합니다.

동기화

코딩 능력을 평가하기 위해 LLM을위한 기존 기준이 있습니다.

SWE-bench는 기존 오픈 소스 프로젝트의 Github 문제를 기반으로 실제 소프트웨어 문제를 해결하는 데 중점을 둡니다.<그림>SWE-bench스위스 벤치

Codeforces 벤치마크는 LLM의 알고리즘 문제 해결 기술을 더 잘 반영합니다. OpenAI는 Codeforces 문제에 대해 o1 및 o3 모델을 테스트하고 상세한 결과를 공유했습니다 (1, 2), 다른 경쟁자들은 그렇지 않았습니다.Codeforces사용자 정보1122

이로 인해 LLM의 직접적인 비교를 허용하는 새로운 기준이 만들어졌습니다. &, 결국, 왜 재미를 위해 그것을하지 않습니까?

벤치마크 디자인

이념은 알고리즘 문제를 해결할 때 인간의 행동을 모방하는 것이지만 코드를 작성하기 위해 LLM을 사용하는 것입니다.

  1. 문제 설명을 다운로드합니다.
  2. 이 설명에서 인스턴스를 만듭니다.
  3. LLM로 코드를 생성합니다.
  4. validation을 위해 코드를 제출합니다.
  5. Await results.
  • 문제 설명을 다운로드합니다.
  • Description에서 인스턴스를 만듭니다.
  • LLM로 코드를 생성합니다.
  • validation을 위해 코드를 제출합니다.
  • 결과를 기다리십시오.

  • 벤치마크의 스케치 단계

    벤치마크의 스케치 단계


    이 단계는 테스트 세트의 각 문제와 각 LLM에 대해 수행되어야합니다.단순함을 위해, LLM은 각 문제에 대한 코드를 작성하려는 한 번의 시도가 있으며, 해결책을 개선하기 위해 반복할 피드백이 없습니다.< BR >


    왜 레트코드?

    Leetcode는 여러 가지 이유로 벤치마킹을위한 좋은 선택이되었습니다.

    • Leetcode 문제는 소프트웨어 엔지니어 위치에 대한 실제 인터뷰에서 사용됩니다.
    • 컴퓨터 과학 학생들은 교육 과정에서 비슷한 문제를 해결하는 법을 배웁니다.
    • 이 문제에 대한 인간 사용자의 성능도 사용할 수 있습니다.
    • Leetcode 문제는 소프트웨어 엔지니어 직책에 대한 실제 인터뷰에서 사용됩니다.
    • 컴퓨터 과학 학생들은 교육 과정에서 비슷한 문제를 해결하는 법을 배웁니다.
    • 그것은 몇 초 안에 솔루션이 맞는지 확인할 수있는 온라인 판사가 있습니다.
    • 많은 인기 프로그래밍 언어가 지원됩니다.
    • 이 문제에 대한 인간 사용자의 성능도 사용할 수 있습니다.

    • Leetcode가 작동하는 방법

      당신이 경쟁 프로그래밍이나 알고리즘 문제를 해결 한 적이 없다면, 여기에 간단한 설명이 있습니다.

      정수 숫자와 정수 타겟의 배열이 주어지면 목표에 추가되는 두 숫자의 인덱스를 반환할 수 있습니다.당신은 각 입력에는 정확히 하나의 솔루션이 있다고 가정할 수 있으며, 같은 요소를 두 번 사용할 수 없습니다. 
      <코드>정수 숫자 배열과 정수 목표를 지정하면 목표에 합쳐질 수 있도록 두 숫자의 인덱스를 반환할 수 있습니다.당신은 각 입력에는 정확히 하나의 솔루션이 있다고 가정할 수 있으며, 같은 요소를 두 번 사용할 수 없습니다. 어떤 순서로든 답을 반환할 수 있습니다.

      경쟁하는 프로그래머는 그 문제를 해결하는 코드 조각을 작성해야 한다.

      처음에는 , 즉 이름과 논증을 지정한 불완전한 함수, 그러나 빈 몸체가 있다.

      class Solution:    def twoSum(self, nums: List[int], target: int) -> List[int]:     # your code here  
      class Solution:    def twoSum(self, nums: List[int], target: int) -> List[int]:     # your code here 

      일반적으로 여러 개의 입력 및 출력 샘플(테스트 케이스)이 설명에 제공됩니다:

      Input:  숫자 = [2,7,11,15], 목표 = 9  출력: [0,1]   
      Input:  숫자 = [2,7,11,15], 목표 = 9  출력: [0,1]  

      문제에는 온라인 판사에게만 사용할 수 있는 수십 개의 테스트 케이스가 있을 수 있습니다. 문제는 (또는 해결책이 받아들여진 것으로 간주됩니다) 코드가 합리적인 시간과 메모리 제한 내에 모든 테스트 케이스에 대한 예상 출력을 생성하는 경우에만 해결됩니다.

      각 문제에는 "수용률"이 있으며, Leetcode 사용자가 제출한 수용된 솔루션의 비율입니다.

      단일 사용자는 무제한 번 코드를 제출할 수 있으며, 각 시도는 수용률로 계산됩니다.

      이 규칙은 Leetcode에 의해 발명되지 않았으며 오랫동안 컴퓨터 과학 대회에서 일반적으로 사용되어 왔습니다.


      데이터 세트

      이전 벤치마크와 마찬가지로, 나는 두 개의 문제 세트에서 LLM을 실행하고 싶었다 :

      • "잘 알려진"문제는 오래 전에 출판되었을 뿐만 아니라 소프트웨어 인터뷰에도 가장 자주 사용되며, 따라서 솔루션이 널리 이용 가능하다.
      • "보이지 않는"문제는 최근에 출판되었으며, 그 해결책은 테스트된 LLM에 의해 관찰될 가능성이 없었다.
    • "잘 알려진"문제는 오래 전에 출판되었을 뿐만 아니라 소프트웨어 인터뷰에도 가장 자주 사용되며, 따라서 솔루션이 널리 사용할 수 있습니다.
    • 최근에 발표 된 "보이지 않는"문제와 그 해결책은 테스트 된 LLM에서 관찰 될 가능성이 없습니다.
    • 대부분의 문제에는 간단한 텍스트 설명이 있고 특정 기능을 코드로 확장해야 하는 경우가 많지만, 다른 문제는 인터페이스를 구현해야 하는 경우가 많으며, 즉 하나의 문제에서 여러 기능을 확장해야 하는 경우가 많습니다.다른 문제에는 외부 링크와 이미지가 있는데, 이는 LLM에 어려움을 초래할 수 있기 때문에 몇 가지 모델이 이미지 입력을 지원하거나 인터넷을 탐색할 수 있습니다.

      Leetcode는 세 가지 문제 목록을 제공합니다 : "Leetcode 75", 그리고 "Top interview 150", "Leetcode 75", 그리고 "Top 100 Likes" 위에서 언급한 문제를 제외한 134"최고 인터뷰 150""Leetcode 75""Top 100 좋아하는 것"

      "보이지 않는"문제에 대해서는 가장 최근에 출판된 문제들 중에서 99개를 선택했습니다: 33개는 쉽고, 33개는 중간이며, 33개는 어려웠습니다. 최근의 문제 ID를 기준으로 결정되었습니다.Leetcode는 문제의 출판 날짜를 표시하지 않지만, 코멘트와 토론을 통해 예측할 수 있습니다.이 "보이지 않는"문제 중 최초의 문제는 아마도 2024년 11월에 출판되었습니다.

      어려움의 수준은 순전히 주관적이며 편집자의 판단에 따라.

      나는 각 어려움 또는 데이터 세트에 대한 문제의 수를 일치시키는 것을 의도하지 않았다.




      Problem set





      문제 세트

      문제 세트

      문제 세트





      잘 알고 있습니다

      잘 알려진

      보이지 않는
      (23 Mar 2025)

      보이지 않는
      (23 Mar 2025)

      보이지 않는
      (23 Mar 2025)
      < BR >

      전체

      133

      99

      전체


      전체

      전체

      133


      133


      9


      99

      Easy

      41

      33


      간단하게

      쉬운


      41



      33

      미디어

      78

      33


      미디어

      미디어

      78


      78



      33

      하드

      14

      33


      하드

      하드


      14



      33

      Leetcode 사용자 수용률

      53.44%

      37.05%

      Leetcode 사용자의 수용률

      Leetcode 사용자의 수용률

      Leetcode 사용자의 수용률



      53.44 %

      53.44 %



      37,05%

      37,05%

      문제 진술과 코드 스냅펫은 내 벤치마킹 도구를 사용하여 Github에 게시되었습니다 : https://github.com/whisk/leetgptsolver

      <그림>https://github.com/whisk/leetgptsolverhttps://github.com/whisk/leetgptsolver


      프롬프트, 언어 선택 및 코드 생성

      벤치마크는 이렇게 설계되었습니다: LLM은 문제에 대한 사전 정보 (또는 다른 문제)없이 코드를 생성하려는 한 번의 시도를하고 테스트 사례를 알지 못하고, 설명 자체에 포함된 경우를 제외하고 있습니다.

      코드를 생성 한 후 피드백을 제공하거나 개선하는 메커니즘이 없습니다.

      나는 모든 LLM과 모든 문제에 대해 동일한 인스턴스를 사용했습니다.

      안녕하세요, 이것은 코딩 인터뷰입니다. 당신에게 주어질 것입니다: * 문제 진술 (샘플 테스트 케이스가 있으면 사용할 수 있습니다). * 시작 코드 스크립트 (지정된 기능 서명). {language} 프로그래밍 언어로 솔루션을 작성하십시오. 당신의 코드가 있어야합니다: * 문제를 완전하고 올바르게 해결하십시오. * 제공된 모든 샘플 테스트 케이스를 통과하십시오. * 수용 가능한 시간 및 메모리 제한 내에서 실행하십시오. * 지정되지 않은 경우 큰 입력을 가정하십시오. * 좋은 코딩 관행 (명확한 논리, 읽을 수있는 구조, 언어 기능의 적절한 사용)을 따르십시오. 여기에 문제 진술입니다: {문제} 여기에 코드 스<코드>안녕하세요, 이것은 코딩 인터뷰입니다. 당신에게 주어질 것입니다: * 문제 진술 (샘플 테스트 케이스가 가능한 경우). * 시작 코드 스크립트 (지정된 함수 서명). {language} 프로그래밍 언어로 솔루션을 작성하십시오. 당신의 코드가 있어야합니다: * 문제를 완전히 그리고 올바르게 해결하십시오. * 제공된 모든 샘플 테스트 케이스를 통과하십시오. * 수용 가능한 시간 및 메모리 제한 내에서 실행하십시오. * 지정되지 않은 경우 큰 입력을 가정하십시오. * 좋은 코딩 관행을 따르십시오 (명확한 논리, 읽을 수있는 구조, 언어 기능의 적절한 사용). 여기에 문제 진술이 있습니다: {문제} 여기에 코드 스크립트가

      이 프롬프트는 나의 첫 번째 초안에서 ChatGPT4로 "경화"되었지만 "프롬프트 엔지니어링"기술을 구현하지 않았습니다.

      문제 설명은 프롬프트에서 사용하기 전에 HTML 태그가 제거되었습니다.

      Python을 선택한 프로그래밍 언어의 경우 (버전 3).

      LLM은 이전 텍스트 없이 작업 코드만 출력하도록 요청되었지만, 이는 많은 경우에 사실이 아니었다.

      기본 청소가 시행되었으며 실제 코드 이외의 모든 것이 제거되었으며 제출되지 않았습니다.


      모델 및 매개 변수

      벤치마크에 사용된 모델은 아래 표에 나와 있으며, 모든 기본적인 매개 변수가 지정되어 있습니다.Knowledge cutoff dates are obtained from the vendor's official documentation and provided for reference, if known.



      <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림>

      판매자

      판매자

      모델


      모델

      모델

      지식 절단 날짜

      지식 절단 날짜

      지식 절단 날짜





      기사

      파라미터

      인류

      claude-3-7-sonnet-20250219

      Nov 2024

      No

      temperature = 0.0 max_tokens = 4096

      인류



      아시아어

      제3-7-소네트-20250219

      조선시대 3-7-소네트-20250219

      클라우드-3-7-소네트-20250219

      2024년 11월

      2017년 11월


      아니요


      아니오

      온도 = 0.0 max_tokens = 4096

      온도 = 0.0 max_tokens = 4096




      클라우드-3-7-sonnet-20250219 (생각 가능)

      글로벌 네트워킹 스토어 2050219 (생각 가능)

      클라우드-3-7-소네트-20250219 (with thinking enabled)

      2024년 11월

      2017년 11월



      온도 = 0.0 max_tokens = 16384 budget_tokens = 8192

      온도 = 0.0 max_tokens = 16384 budget_tokens = 8192

      DeepSeek

      deepseek-chat (DeepSeek-V3)

      unknown

      No

      temperature = 0.0

      DeepSeek


      중심 검색



      인터넷 채팅 (DeepSeek-V3)

      중요한 채팅<강력한>(DeepSeek-V3)

      알 수 없는


      알 수 없는


      아니요


      아니오

      온도 = 0.0

      온도 = 0.0


      deepseek-reasoner (DeepSeek-R1)

      unknown

      Yes

      temperature = 0.0



      진정한 견해 (DeepSeek-R1)

      deepseek-reasoner (DeepSeek-R1)

      Deepseek-reasoner (DeepSeek-R1)

      알 수 없는


      알 수 없는



      온도 = 0.0

      온도 = 0.0

      Google



      Google


      구글

      제이미니-2.0-플래시-001

      제이미니-2.0-플래시-001

      제미니-2.0-플래시-001

      알 수 없는


      알 수 없는


      아니요


      아니오

      온도 = 0.0

      temperature = 0.0




      제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제2제

      이미지 2.0-pro-exp-02-05

      gemini-2.0-pro-exp-02-05

      unknown

      알 수 없는


      아니요


      아니오

      온도 = 0.0

      온도 = 0.0




      제미니-2.5-프로-exp-03-25

      제이미니-2.5-프로-exp-03-25

      제미니-2.5-프로-exp-03-25

      알 수 없는


      알 수 없는



      온도 = 0.0

      온도 = 0.0

      xAI

      grok-2-1212

      2024년 7월 17일

      No

      seed = 42


      xAI



      그로크-2-1212

      grok-2-1212

      2024년 7월 17일

      2024년 7월 17일

      아니요


      아니오


      사이즈 = 42

      씨앗 = 42

      OpenAI

      o1-2024-12-17

      Oct 01, 2023

      Yes

      seed = 42


      오픈하기

      o1-2024-12-17

      o1-2024-12-17

      o1-2024-12-17

      Oct 01, 2023

      2023년 10월 1일




      사이즈 = 42

      씨앗 = 42


      o3-mini-2025-01-31

      Oct 01, 2023

      Yes

      seed = 42



      o3-mini-2025-01-31

      o3-mini-2025-01-31

      o3 미니-2025-01-31

      2023년 10월 1일

      2023년 10월 1일




      사이즈 = 42

      씨앗 = 42

      이 벤치마크는 가능한 한 결정적이고 재현 가능하도록 목표로; 따라서, "온도"또는 " 씨앗"과 같은 매개 변수가 사용되었습니다.그러나, 테스트 된 모델 중 어느 것도 완전히 결정적인 출력을 보장하지 않습니다.이 요소는 이러한 테스트를 다시 실행할 때 고려되어야합니다.

      모든 알려진 지식 절단 날짜는 알려진 데이터 세트에서 가장 오래된 문제(2024년 11월)보다 이전입니다.그러나 Gemini 및 DeepSeek 모델 가족에 대한 절단 날짜는 찾을 수 없습니다.

      일부 모델은 기본적으로 "정의"또는 "생각" 모드를 지원하지만 Claude 3.7 Sonnet에서는 매개 변수를 통과함으로써 활성화될 수 있습니다.이 기능의 사용은 표에 지정되어 있습니다.

      결과

      데이터에 대한 결과></p><img src=


      All competitors showed very high acceptance rates on well-known problems, like in the previous benchmark. I did not test superior models or modifications (namely: Claude 3.7 Sonnet with reasoning enabled, DeepSeek R1, Gemini 2.5 Pro, O1) to save time and credits, as the results were highly predictable.

      그 "보이지 않는" 문제 세트에 대한 결과

      결과에 "보이지 않는" 문제 세트

      결과는 두 가지 측면에서 "보이지 않는"문제에 대해 눈에 띄게 다릅니다.

      1. 모든 모델 의 경우 "보이지 않는"문제에 대한 수용률이 낮습니다 이것은 중간 및 단단한 문제에 특히 눈에 띄는 것입니다.
      2. 모든 모델에 따라 정확한 수치는 모델마다 달라졌지만, 모든 어려움의 문제에 대해 더 나은 결과를 얻었습니다.
    • 모든 모델 의 경우 "보이지 않는"문제에 대한 수용률이 낮습니다 이것은 중간 및 단단한 문제에 특히 눈에 띄습니다.
    • the acceptance rate is lower for "unseen" problems "보이지 않는"문제에 대한 수락률이 낮습니다.
    • "정의"또는 "생각" 모드를 사용하는 모델은 모든 어려움의 문제에서 더 나은 결과를 얻었지만, 정확한 숫자는 모델마다 다릅니다.
    • “정의”또는 “생각” 모드를 사용한 모델은 더 나은 결과를 얻었습니다

      잘 알려진 문제에 대한 상당히 높은 수용률은 그 문제와 그 해결책이 훈련 세트의 일부였을 가능성에 의해 설명될 수 있으며, 모델은 알려진 올바른 해결책을 재현해야만 했습니다.그러나, 새로운 중간 및 어려운 문제에 대한 사용자의 수용률은 또한 "잘 알려진" 세트의 문제보다 낮습니다.이 경우는 양적하기 어렵고, 새로운 문제가 "더 어려운"이라는 것을 의미하지는 않습니다. 어려움 평가는 앞서 언급했듯이 매우 주관적입니다.그리고 LLM 자체의 경우와 마찬가지로, 인간 사용자는 알려진 잘 알려진 문제에 대한 올바른 해결책을 제출할 수 있습니다.

      모든 모델은 기본 동료들보다 상당히 뛰어났다. 가장 중요한 것은, 그들 중 일부는 중간 및 어려운 문제의 상당 부분을 해결할 수 있었다 - 단지 1 년 전에 불가능한 성취. o3-mini는 모든 "모든"모델 중 최고의 결과를 보여줍니다. o3-mini는 경쟁 프로그래밍 문제를 해결하기 위해 특별히 훈련을 받았습니다. 그러나, 나는 토큰 예산에 매우 의존하기 때문에 알고리즘 문제를 해결하기 위해 어떤 모델이 더 좋을지 결론을 내리는 것을 멈추고 있습니다.

      가장 중요한 것은 그들 중 일부는 중간 및 어려운 문제의 상당 부분을 해결할 수 있었다o3-mini는 특별히 훈련되었습니다아마도 괜찮을 것 같아요

      미래 고려사항

      우리는 "보이지 않는"문제 집합이 모델의 교육 데이터에 포함되지 않았는지 보장할 수 없습니다.이 문제를 해결하기 위해, 우리는 미래의 벤치마크를 위해 특별히 설계된 새로운 독특한 문제를 생성하는 것을 고려할 수 있습니다.

      또한, 또 다른 전략은 덜 일반적으로 사용되는 프로그래밍 언어를 채용하는 것입니다.이 접근법은 LLM이 Python로 작성된 알려진 올바른 코드를 "코피 패스"하는 대신에 솔루션을 개발해야 할 수 있습니다.

      이 아이디어는 더 많은 연구가 필요하며, 다른 누군가 또는 내가 그들에 몰입할 수 있기를 바랍니다.

      왼쪽

      https://github.com/whisk/leetgptsolver My 이전 벤치마크 결과 (2024): https://hackernoon.com/testing-llms-on-solving-leetcode-problems
    • Raw 결과, 문제 세트 및 소스 코드는 내 GitHub에서 찾을 수 있습니다:  https://github.com/whisk/leetgptsolver
    • <그림>https://github.com/whisk/leetgptsolverhttps://github.com/whisk/leetgptsolver
    • 내 이전 벤치마크 결과 (2024): https://hackernoon.com/testing-llms-on-solving-leetcode-problems
    • <그림>https://hackernoon.com/testing-llms-on-solving-leetcode-problemshttps://hackernoon.com/testing-llms-on-solving-leetcode-problems


      Cover image created by DALL·E.

    Trending Topics

    blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks