전체 글 240

project euler 32. problem

1부터 n까지의 각 숫자를 한번씩만 써서 만들 수 있는 숫자를 팬디지털(pandigital)이라고 합니다. 예를 들면 15234는 1부터 5의 숫자가 한번씩만 쓰였으므로 1 ~ 5 팬디지털입니다.7254라는 숫자는 그런 면에서 특이한데, 39 × 186 = 7254 라는 곱셈식을 만들 때 이것이 1 ~ 9 팬디지털이 되기 때문입니다.이런 식으로 a × b = c 가 1 ~ 9 팬디지털이 되는 모든 c의 합은 얼마입니까?(참고: 어떤 c는 두 개 이상의 (a, b)쌍에 대응될 수도 있는데, 이런 경우는 하나로 칩니다) 12345678910111213141516171819202122232425262728293031323334353637383940def check(tmp): List = ['0', '0', '..

project euler 30. problem

각 자리의 숫자를 4제곱해서 더했을 때 자기 자신이 되는 수는 놀랍게도 단 세 개밖에 없습니다.1634 = 14 + 64 + 34 + 44 8208 = 84 + 24 + 04 + 84 9474 = 94 + 44 + 74 + 44(1 = 14의 경우는 엄밀히 말해 합이 아니므로 제외합니다)위의 세 숫자를 모두 더하면 1634 + 8208 + 9474 = 19316 입니다.그렇다면, 각 자리 숫자를 5제곱해서 더했을 때 자기 자신이 되는 수들의 합은 얼마입니까? 123456789101112131415161718192021 Sum = 0for target in range(2, 1000000): tmp = str(target) result = 0 for i in range(0, len(tmp)): result ..

project euler 29. problem

2 ≤ a ≤ 5 이고 2 ≤ b ≤ 5인 두 정수 a, b로 만들 수 있는 ab의 모든 조합을 구하면 다음과 같습니다.22=4, 23=8, 24=16, 25=32 32=9, 33=27, 34=81, 35=243 42=16, 43=64, 44=256, 45=1024 52=25, 53=125, 54=625, 55=3125여기서 중복된 것을 빼고 크기 순으로 나열하면 아래와 같은 15개의 숫자가 됩니다.4, 8, 9, 16, 25, 27, 32, 64, 81, 125, 243, 256, 625, 1024, 3125그러면, 2 ≤ a ≤ 100 이고 2 ≤ b ≤ 100인 a, b를 가지고 만들 수 있는 ab는 중복을 제외하면 모두 몇 개입니까? 12345678910array = []for a in range..

project euler 28. problem

숫자 1부터 시작해서 우측으로부터 시계방향으로 감아 5×5 행렬을 만들면 아래와 같이 됩니다.21 22 23 24 25 20 7 8 9 10 19 6 1 2 11 18 5 4 3 12 17 16 15 14 13여기서 대각선상의 숫자를 모두 더한 값은 101 입니다.같은 방식으로 1001×1001 행렬을 만들었을 때, 대각선상의 숫자를 더하면 얼마가 됩니까? 12345678910111213141516target1 = 1 # /target2 = 1 # \ result1 = 0result2 = 0 for i in range(0, 1001): target1 += 2*(i) result1 += target1 target2 += 4*((i+1)/2) result2 += target2 print "%d. target..

project euler 27. problem

오일러는 다음과 같은 멋진 2차식을 제시했습니다.n2 + n + 41이 식의 n에다 0부터 39 사이의 숫자를 넣으면, 그 결과는 모두 소수가 됩니다. 하지만 n = 40일 때의 값 402 + 40 + 41 은 40×(40 + 1) + 41 이므로 41로 나누어지고, n = 41일 때 역시 412 + 41 + 41 이므로 소수가 아닙니다.컴퓨터의 발전에 힘입어 n2 − 79n + 1601 이라는 엄청난 2차식이 발견되었는데, 이것은 n이 0에서 79 사이일 때 모두 80개의 소수를 만들어냅니다. 이 식의 계수의 곱은 -79 × 1601 = -126479가 됩니다.아래와 같은 모양의 2차식이 있다고 가정했을 때,n2 + an + b (단 | a | < 1000, | b | < 1000)0부터 시작하는 연속..

project euler 26. problem

분자가 1인 분수를 단위분수라고 합니다. 분모가 2에서 10까지의 단위분수는 아래와 같습니다.숫자 위에 찍힌 점은 순환마디를 나타내는데, 1/6의 경우 순환마디는 "6"으로 0.166666...처럼 6이 무한히 반복됨을 뜻합니다. 같은 식으로 1/7은 6자리의 순환마디(142857)를 가집니다.d 를 1000 이하의 정수라고 할 때, 단위분수 1/d 의 순환마디가 가장 긴 수는 무엇입니까? 12345678910111213141516171819202122232425262728sequenceLength = 0array = [] for i in range(0, 1001): array.append(0)for i in range(1000, 1, -1): if sequenceLength >= i: continue ..

16-8-19 soicem : white

책가지러 연구실에 온겸 심심풀이 한 판 ~ soicem : white 9로 벌리길래 1과 9를 끊고 끊을 돌이 각자 살면 지긴 힘들겠다 생각 생각한데로 흑돌들을 끊어놓진 못했지만 우하귀와 중앙으로 돌이 살아가서 끊지만 못했지 사실상 동일한 이펙트, 46으로 뻗었더니 47로 지켜서 48로 상변에 돌놓으며 승리 확신 내가 두면서도 이해가 안되는 수순. 이런식으로 뒀다면 우상귀가 살았을텐데, 승패를 떠나서 너무 당연한데 왜 안보였지? 허허 3번으로 들어온건 흑이 2집정도 손해본듯. 15번에서 가능성도 없어진 상황. 살리자니 중앙이 너무 크고 집수도 부족해서 시도할만한 포인트가 없는듯 사실 여기서 좌하귀는 패로 남겨두고 10으로 가던지해서 우변에 있는 백도 산게 아니라(물론 죽을리 없지만), 좀 활용해서 차이를..

* News/기보 2016.08.19

project euler 25. problem

피보나치 수열은 아래와 같은 점화식으로 정의됩니다.Fn = Fn-1 + Fn-2 (단, F1 = 1, F2 = 1).이에 따라 수열을 12번째 항까지 차례대로 계산하면 다음과 같습니다.F1 = 1 F2 = 1 F3 = 2 F4 = 3 F5 = 5 F6 = 8 F7 = 13 F8 = 21 F9 = 34 F10 = 55 F11 = 89 F12 = 144수열의 값은 F12에서 처음으로 3자리가 됩니다.피보나치 수열에서 값이 처음으로 1000자리가 되는 것은 몇번째 항입니까? 12345678910def fibo(n1, n2, cnt): target = 10**1000 if n2 > target: print cnt print n2 else: return fibo(n2, n1+n2, cnt+1) fibo(1, 1,..

Recursive function

Recursion : the act of a function invoking itself 목표 1. Recursive한 생각을 이해한다.2. 순열에 관련된 문제들을 재귀적인 방법으로 구현한다.3. slimp & slump 문제를 재귀적 방법으로 구현하고 더 낳은 방법에 대해서 고민한다. 문제 1. Indexing & Recursive 1.1 배열을 다루는 방법 1. 임시 저장소를 두고 SWAP하는 방법2. 인덱스를 활용하는 방법 123456789101112131415161718192021222324252627282930313233public class RecursiveSelectionSort { public static void sort(double[] list) { sort(list, 0, list.l..