콘텐츠로 건너뛰기
Home » 스터디 » Project Euler » 페이지 9

Project Euler

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

오일러 프로젝트 08

접근 리스트 내 임의의 위치에서부터 연속한 5개의 값을 얻고, 이 수들의 누적곱을 구할 수 있으면, 0부터 955 사이의 위치에 대해 이 계산을 적용한 후 최대값을 구하면 된다. 리스트를 xs라 하고, 특정한 위치 pos에서 다섯 개의 연속한 원소를 구하기 위해서는 슬라이싱 문법을 사용할 수 있다. 누적곱은 루프를 돌면서 곱해도 되고, reduce() 함수를 사용해서 리스트를 접어서 만들수도 있다.

오일러 프로젝트 07

소수를 크기 순으로 나열하면 2, 3, 5, 7, 11, 13, … 과 같이 됩니다. 이 때 10,001번째의 소수를 구하세요.(http://euler.synap.co.kr/prob_detail.php?id=7) 접근 소수판별함수를 만들어볼 차례이다. 사실 이 블로그를 통틀어서 여러 번 소개한 적이 있다. 소수를 판별하기 위해서는 기본적으로 2, 3, … n – 1 까지의 수를 모두 나눠보아야 한다. 하지만 만약 n이 소수가 아니라면 n = p * q 로 표현할 수 있을 것이며, p <= q 라면 2 에서부터 n의 제곱근 사이에 p가 등장해야 한다. 따라서 n의 제곱근 이하에서만 검사를하면 검사… 더 보기 »오일러 프로젝트 07

오일러 프로젝트 06

1부터 10까지 자연수를 각각 제곱해 더하면 다음과 같습니다 (제곱의 합).1^2 + 2^2 + … + 10^2 = 385 1부터 10을 먼저 더한 다음에 그 결과를 제곱하면 다음과 같습니다 (합의 제곱).(1 + 2 + … + 10)^2 = 55^2 = 3025 따라서 1부터 10까지 자연수에 대해 “합의 제곱”과 “제곱의 합” 의 차이는 3025 – 385 = 2640 이 됩니다. 그러면 1부터 100까지 자연수에 대해 “합의 제곱”과 “제곱의 합”의 차이는 얼마입니까? (http://euler.synap.co.kr/prob_detail.php?id=6) 접근 1부터 100까지를 제곱한 수의 합과, 1부터 100까의 합의 제곱의… 더 보기 »오일러 프로젝트 06

오일러 프로젝트 04

앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다.
두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다.
세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까?

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

오일러 프로젝트 03

오일러 프로젝트 세 번째 문제. 이번 문제는 인수의 개념과 관련된 문제이다. 일단 문제는 다음과 같다.

어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다.
예를 들면 13195의 소인수는 5, 7, 13, 29 입니다.
600851475143의 소인수 중에서 가장 큰 수를 구하세요. (http://euler.synap.co.kr/prob_detail.php?id=3)

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

오일러 프로젝트 02

오일러 프로젝트의 두 번째 문제는 4백만 이하의 피보나치 수열 중에서 짝수인 항을 모두 더한 합을 구하는 문제이다.

피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다
. ( 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... )
 
짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까?

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