Skip to content

jongfeel/ProjectEuler

Repository files navigation

ProjectEuler

ProjectEuler practice

Why project euler project

이걸 안건 2017년 쯤이었던 것 같다. 영국에서 프로그래머 활동을 하는 어떤 분의 블로그를 봤는데, 꾸준히 그리고 부지런히 프로젝트 오일러의 문제 풀이를 하고 있는 걸 봤다. 그때는 막연히 나도 하면 좋겠다는 생각만 했을 뿐 실천해야 겠다는 생각은 하지 못했다. 그러다가 실천 의지를 발휘해서 하기로 했다.

그 분의 블로그 주소

http://ntalbs.github.io/

How to pick programming language

Before

TIOBE 순위 중 1 - 5위 까지의 프로그래밍 언어를 랜덤으로 하나씩 선택 해 문제를 풀고, 다음 문제는 나머지 선택되지 않은 프로그래밍 언어 중 랜덤하게 선택해서 풀어 나가는 방식

Now

2020 state of the octoverse에서 Top languages over the years 순위를 참고해 1 - 10위 까지의 프로그래밍 언어를 랜덤으로 하나씩 선택해 풀고, 다음 문제는 나머지 선택되지 않은 프로그래밍 언어 중 랜덤하게 선택해서 풀어 나가는 방식.

26번 문제부터 이 방식을 채택해서 진행함.

2020 top languages over the years는 다음과 같다.

TopLanguagesOverTheYears_2020

Solve sequence, using software engineering

Analysis

  • 실제 알고 있어야 하는 수학적인 개념
  • 수학적인 풀이 예제를 통한 구현 방식 이해

Design

  • 생각한 것을 pseudo level로 풀어야 하는 언어에 맞게 정리
  • 생각했던 알고리즘이나 만들어야 하는 함수를 문서로 작성

Coding

  • 분석, 설계 했던 내용 그대로 코딩 진행
  • 코딩 진행 중 생각했던 것과 달랐을 경우 문서 내용에 추가

Test

  • 실제 테스트 데이터나 코드는 작성하지 않음
  • 필요에 따라 성능 테스트를 위한 시간 측정이나 logging은 진행 => 필요시 uncomment

Maintenance

  • 더 나은 구현 방식에 대한 걸 찾으면 diff 코드를 문서에 추가
  • 언어별 다른 점이나 더 나은점이 있다면 역시 변경하면서 문서에 추가
  • Revised할 문제가 필요하다면 별도로 새 프로젝트로 만들어서 진행

중요한 것!

  • 절대 코딩부터 하지 말고 문제 자체를 이해한다.
  • 주어진 문제 내애서 해결해야 하는 방안을 코드로 구현할 수 있게 설계를 진행하고 문서 작성을 함
  • 코딩은 그 다음에 해도 늦지 않음

Notes

  • 문제를 푸는데 필요한 수학적 개념을 따로 정리
  • 링크 참고: Notes

Problems

  • Top languages over the years 2020: picked programming is JavaScript (top 1)
  • Top languages over the years 2020: picked programming is C# (top 5)
  • TIOBE index for Jun 2018, Ranking Top 1: Java
  • TIOBE index for October 2020, Ranking Top 1: C
  • TIOBE index for September 2020, Ranking Top 3: Python
  • TIOBE index for July 2020, Ranking Top 4: C++
  • TIOBE index for December 2019, Ranking Top 5: C#
  • TIOBE index for June 2020, Ranking Top 2: Java
  • TIOBE index for May 2020, Ranking Top 5: C#
  • TIOBE index for September 2019, Ranking Top 1: Java
  • TIOBE index for February 2020, Ranking Top 2: C
  • TIOBE index for December 2019, Ranking Top 5: C#
  • TIOBE index for October 2019, Ranking Top 4: C++
  • TIOBE index for September 2019, Ranking Top 1: Java
  • TIOBE index for December 2018, Ranking Top 3: Python
  • TIOBE index for September 2018, Ranking Top 2: C
  • TIOBE index for July 2019, Ranking Top 4: C++
  • TIOBE index for January 2019, Ranking Top 5: Visual Basic .NET
  • TIOBE index for September 2018, Ranking Top 1: Java
  • TIOBE index for August 2018, Ranking Top 3: C++
  • TIOBE index for August 2018, Ranking Top 5: Visual Basic .NET
  • TIOBE index for August 2018, Ranking Top 2: C
  • TIOBE index for August 2018, Ranking Top 1: Java
  • TIOBE index for August 2018, Ranking Top 4: Python
  • TIOBE index for August 2018, Ranking Top 3: C++
  • TIOBE index for August 2018, Ranking Top 3: C++
  • TIOBE index for July 2018, Ranking Top 2: C
  • TIOBE index for July 2018, Ranking Top 5: Visual Basic .NET
  • TIOBE index for July 2018, Ranking Top 4: Python
  • TIOBE index for Jun 2018, Ranking Top 1: Java