오일러 프로젝트 08

문제

8번 문제
1000자리 수 안에서 연속된 13개 숫자 곱의 최댓값

접근

문제를 잘 읽어보면 상당히 간단한 문제라는 것을 알 수 있습니다.

💡
예전에는 연속한 5개 숫자의 곱 중 최대값을 구했는데, 지금은 13개로 늘었다...
  1. 입력으로는 1000자리 숫자가 주어진다.
  2. 이 문자열을 한 글자씩 쪼갠 후, 정수로 만든다.
  3. 0, 1, 2, 3, 4 번째의 다섯 숫자의 곱을 구한다.
  4. 1, 2, 3, 4, 5 번째의 다섯 숫자의 곱을 구한다.
  5. ... 이 과정을 반복하면서 곱의 최대값을 구한다.

숫자의 리스트를 xs 라 할 때 맨 마지막 13개 숫자는 xs[987:1000]가 될 것입니다. 따라서 0~987 구간 동안, 그 인덱스를 시작으로 하는 열세 개 숫자의 곱을 구하고, 그 곱들의 최대값을 구하면 됩니다.

다만, 1000자 짜리 문자열을 고스란히 한 줄에 쓰는 것은 예의 아닌 것 같아서 50자로 나눈 문자열을 사용하기로 합니다.

from functools import reduce

s = """
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450
"""

prod = lambda xs: reduce(lambda x, y: x * y, xs)

xs = [int(x) for x in s if x.isdigit()]

print(max(prod(xs[i:i+13]) for i in range(len(xs) - 13)))

Read more

워드프레스에서 고스트로 이전

워드프레스에서 고스트로 이전

이 글을 쓰면서도 믿기 힘든 사실인데, 블로그라는 걸 처음 시작한지가 20년이 되었습니다. 이글루스에서 처음 시작했다가, SK컴즈가 인수한다고 발표함과 동시에 워드프레스로 플랫폼을 옮겼죠. 워드프레스오 옮긴 이후에는 호스팅 환경을 이리 저리 옮기긴 했지만 거의 18년 가까이 워드프레스를 사용해온 것 같습니다. 그 동안 워드프레스는 블로깅 툴에서 명실상부한 범용CMS로 발전했습니다. 사실 웬만한 홈페이지들은 이제

By sooop
띄어쓰기에 대한 생각

띄어쓰기에 대한 생각

업무 메일을 쓸 때 가장 많이 쓰는 말 중에 하나가 메일 말미에 ‘업무에 참고 부탁 드립니다.‘인데요, 어느 날부터 아웃룩에서 이 ‘부탁 드립니다’가 틀렸다고 맞춤법 지적을 하기 시작했습니다. 맞는 말은 ‘부탁드립니다’라고 붙여 쓰는 거라고. 사실 아래아한글 시절부터 이전의 MS워드까지, 워드프로세서들의 한국어 맞춤법 검사 실력은 거의 있으나 마나 한

By sooop

구글 포토에서 아이클라우드로 탈출한 후기

한 때 구글 포토가 백업 용량을 무제한으로 제공해 주겠다고해서, 구글 포토를 사용해서 사진을 백업해왔습니다. 물론 이 이야기의 결말은 저나 이 글을 읽고 있는 여러분이나 모두 알고 있습니다. 사실 AI에게 학습 시킬 이미지 데이터를 모으기 위한 것일 뿐이라거나 하는 이야기는 그 당시에도 있었습니다만, 에이 그래도 구글인데 용량은 넉넉하게 주겠지…하는 순진한

By sooop

Julia의 함수 사용팁

연산자의 함수적 표기 Julia의 연산자는 기본적으로 함수이며, 함수 호출 표기와 같은 방식으로 호출하는 것이 가능합니다. 또한 그 자체로 함수이기 때문에 filter(), map() 과 같이 함수를 인자로 받는 함수에도 연산자를 그대로 적용하는 것이 가능합니다. 특히 + 연산자는 sum() 함수와 같이 여러 인자를 받아 인자들의 합을 구할 수 있습니다. 2 + 3 # = 5 +(2,

By sooop