본문 바로가기

Programming/Rust로 Euler 문제 풀이

Euler 프로젝트 소개, Rust 이용한 프로그래밍 소개

반응형

오일러 프로젝트라는 것이 있다. 수학자 오일러(Euler)의 이름을 딴 프로젝트인데, 프로그래밍으로 풀 수 있는 수학 문제를 내고, 이 풀이를 소개하는 프로젝트이다.

  https://projecteuler.net/about

 

2024년 8월 기준으로 893개의 문제가 등록되어 있고, 전 세계의 프로그래밍 관련한 도전자들이 문제들에 대해 풀어보고, 어떤 이들은 자신이 사용하는 프로그래밍 언어(자바, 파이썬 등)로 이 문제들에 대한 풀이법을 SNS에 게재하고 있다.

 


여기서는 Rust 언어를 이용해서 오일러 프로젝트에 있는 문제들을 풀어 볼 것이다.

  • 단순히 문제에 대한 답을 제시하지 않고, 문제에 대해 어떻게 효과적인 방법으로 풀 수 있는지 그 풀이 방법 및 알고리즘에 대해 소개할 것이다. 이 과정에서 풀이 방법은 여러 사이트 및 오일러 프로젝트에 있는 풀이법을 참조하기는 하겠으나, 대부분의 초급/중급 프로그래머도 이해할 수 있게 풀어서 설명할 것이다.
  • Euler Project 사이트에서는 한 개 케이스에 대해서 그 답을 낼 수 있으면 맞았다고 하고 있으나, 해당 풀이가 여러가지 케이스에 대해서 모두 적용되는지, 그리고 그 풀이 방법이 효율적인 풀이방법인지는 해당 프로젝트 사이트에서 검증할 수는 없다. 이러한 결점은 해커랭크 사이트(https://www.hackerrank.com/)에서 해결할 수 있다. 이 사이트에서는 해당 문제에 대한 풀이 코드를 제출하면 굉장히 많은 케이스에 대해서 테스트하고 또한 일정 시간 안에 풀이가 끝나지 않으면 타임아웃 처리해서, 최적의 알고리즘을 구현하지 않으면 해당 문제를 통과하지 못하게 하고 있다.
    필자는 직접 해커랭크에 코드를 등록하고 테스트를 100%로 통과하는 코드만을 여기에 제시할 것이다.
  • Rust 언어는 비교적 잘 알려지지 않은 언어이다. 그러나, 미래가 기대되는 언어이고, 필자는 이 언어가 향후 많은 분야에서 C/C++이나 Java를 대체할 것으로 생각하고 있다. 아직 우리나라뿐 아니라 전 세계적으로도 Rust로 작성된 코드가 활발하지 않고, Euler Proejct의 문제에 대해서도 Rust로 잘 작성된 코드를 찾기 힘든 상황이다. 여기서는 Euler Project의 각 문제들에 대해서, Rust의 외부 라이브러리 등을 사용하지 않고, 기본 함수들 만을 이용해서 문제를 풀 것이고, 수십 년간의 프로그래밍 노하우를 기반으로 풀이에 대한 가장 효율적인 Rust 코드를 제시할 것이다. 

 

 

반응형