콘텐츠로 건너뛰기
Home » 스터디 » Project Euler

Project Euler

오일러 프로젝트의 문제 풀이. 주로 파이썬과 Swift로 풀이합니다. (Python 3.6, Swift 4.0)

오일러 프로젝트 87번

어떤 소수의 제곱, 세제곱, 네제곱의 합으로 표현할 수 있는 수를 찾는 문제. 소수의 제곱 + 소수의 3제곱 + 소수의 4제곱)으로 나타낼 수 있는 가장 작은 수는 28입니다. 28 = 22 + 23 + 2433 = 32 + 23 + 2449 = 52 + 23 + 2447 = 22 + 33 + 24 50 미만에 이런 수는 모두 네 개 있습니다. 5천만 미만에 이렇게 나타낼 수 있는 수는 모두 몇 개나 됩니까? 보다 영리하게 푸는 방법은 여전히 모르겠고, 현재로서는 brute-force로 푸는… 더 보기 »오일러 프로젝트 87번

오일러 프로젝트 85

균일한 격자 내에서 만들 수 있는 직사각형의 개수에 관한 문제이다. 눈금의 크기가 1인 격자에서 가로, 세로를 정했을 때 그 속에서 만들 수 있는 직사각형의 개수가 2백만개에 가장 근접할 때의 가로/세로를 구하는 것이다. 격자의 가로 크기를 x, 세로 크기를 y라 했을 때 그 내부에 존재하는 직사각형들의 가로 크기는 1, 2, 3, … x 이고 세로 크기도 1, 2, 3, … y 가 된다. 가로가 a 일 때 이 폭으로 x 에 들어갈 수 이는 경우는 (x + 1 – a) 개… 더 보기 »오일러 프로젝트 85

오일러 프로젝트 84

이번 문제는 문제가 길고 복잡하기 때문에 풀이 위주로 갑니다.

모노폴리 시뮬레이터를 작성하고 여러 차례 돌리면서 각 칸에 방문한 횟수를 늘려나간다. 정해진 횟수를 돈 다음, 각 칸에 도달했던 횟수를 계산해본다. 먼저 모노폴리 시뮬레이터를 작성해보자.

더 보기 »오일러 프로젝트 84

오일러 프로젝트 82

(참고: 이 문제는 81번 문제의 좀 더 어려운 버전입니다)

아래와 같은 5×5 행렬이 있습니다. 맨 왼쪽 열의 아무곳에서나 출발하여 위/아래/오른쪽으로만 움직이면서 맨 오른쪽 열까지 갈 때, 빨갛게 표시된 경로의 합이 994로 가장 작습니다.

31kB 짜리 파일 matrix.txt에는 80×80 행렬의 정보가 들어있습니다. 위와 같은 방법으로 이 행렬의 맨 왼쪽 열에서 출발하여 오른쪽 열까지 갈 때, 경로 합의 최소값은 얼마입니까?

더 보기 »오일러 프로젝트 82

오일러 프로젝트 80

자연수의 제곱근이 정수가 아니라면 무리수가 되고, 이런 경우 소수점 밑으로 반복되는 패턴이 전혀 없는 숫자들이 무한히 전개됩니다.2의 제곱근은 1.41421356237309504880… 인데, 처음 100개까지의 자릿수를 모두 더하면 475입니다. 1부터 100까지의 자연수 중에서 제곱근이 무리수인 경우에 대해, 처음 100개까지의 자릿수를 더한 값들의 총합은 얼마입니까? 접근 파이썬에서 제곱근을 구하는 방법은 math.sqrt() 함수를 사용할 수도 있고, n ** 0.5를 사용하는 방법이 있다. 그런데 이 두 경우에 연산 결과는 float 타입으로 정밀도가 제한된 부동소수점 숫자 타입을 사용하기 때문에 소수점 아래 99자리까지의 실제 숫자를 알 수 없다.… 더 보기 »오일러 프로젝트 80

오일러 프로젝트 79

문제

온라인 뱅킹에서 흔히 쓰이는 보안 기법 중에는, 비밀번호에 포함된 숫자를 랜덤하게 세 개 입력하도록 하는 것이 있습니다.
예를 들어 531278이라는 비밀번호에 대해서 2번째, 3번째, 5번째 숫자를 입력하도록 하는 식입니다. 이 때 올바른 입력은 317이 됩니다.

첨부한 텍스트 파일 keylog.txt에는 로그인에 성공한 어떤 사용자의 입력 기록이 50건 담겨져 있습니다. (비밀번호의 길이는 알 수 없습니다)

3개의 숫자는 항상 앞쪽부터 순서대로 요청된다고 할 때, 위의 접속 기록에서 알아낼 수 있는 가장 짧은 길이의 비밀번호는 무엇입니까?

더 보기 »오일러 프로젝트 79