프로그래밍 관심있는 이제 2학년올라가는 비전공자입니다 <div>코드카데미에서 파이썬을 혼자 끝내긴 했는데요 이제 뭘 더할지도 잘 모르겠고 해서</div> <div>일단은 프로젝트 오일러 문제라도 풀어보고 있습니다.</div> <div>다름이 아니라 문제 8번에서 코드는 멀쩡하게 돌아가는것 같은데 답이 아니라고 해서 질문 올립니다.</div> <div>다음은 문제입니다.</div> <div><p style="font-family: '맑은 고딕', 돋움, 'Trebuchet MS', sans-serif; font-size: 16px; line-height: normal">다음은 연속된 1000자리 숫자입니다 (읽기 좋게 50자리씩 잘라놓음).</p> <p style="font-family: '맑은 고딕', 돋움, 'Trebuchet MS', sans-serif; font-size: 16px; line-height: normal"><tt>73167176531330624919225119674426574742355349194934<br />96983520312774506326239578318016984801869478851843<br />85861560789112949495459501737958331952853208805511<br />12540698747158523863050715693290963295227443043557<br />66896648950445244523161731856403098<span style="color: #ff0000"><strong>71112</strong></span>1722383113<br />62229893423380308135336276614282806444486645238749<br />30358907296290491560440772390713810515859307960866<br />70172427121883998797908792274921901699720888093776<br />65727333001053367881220235421809751254540594752243<br />52584907711670556013604839586446706324415722155397<br />53697817977846174064955149290862569321978468622482<br />83972241375657056057490261407972968652414535100474<br />82166370484403199890008895243450658541227588666881<br />16427171479924442928230863465674813919123162824586<br />17866458359124566529476545682848912883142607690042<br />24219022671055626321111109370544217506941658960408<br />07198403850962455444362981230987879927244284909188<br />84580156166097919133875499200524063689912560717606<br />05886116467109405077541002256983155200055935729725<br />71636269561882670428252483600823257530420752963450</tt></p> <p style="font-family: '맑은 고딕', 돋움, 'Trebuchet MS', sans-serif; font-size: 16px; line-height: normal">여기서 붉게 표시된 71112의 경우 7, 1, 1, 1, 2 각 숫자를 모두 곱하면 14가 됩니다.</p><span style="font-family: '맑은 고딕', 돋움, 'Trebuchet MS', sans-serif; font-size: 16px; line-height: normal">이런 식으로 맨 처음 (7 × 3 × 1 × 6 × 7 = 882) 부터 맨 끝 (6 × 3 × 4 × 5 × 0 = 0) 까지 5자리 숫자들의 곱을 구할 수 있습니다.</span> <p style="font-family: '맑은 고딕', 돋움, 'Trebuchet MS', sans-serif; font-size: 16px; line-height: normal"></p> <p style="font-family: '맑은 고딕', 돋움, 'Trebuchet MS', sans-serif; font-size: 16px; line-height: normal">이렇게 구할 수 있는 5자리 숫자의 곱 중에서 가장 큰 값은 얼마입니까?</p></div> <div>다음은 제 코드입니다. (왕초보 주의 완전못함 주의 ㅋㅋ)</div> <div><br /></div> <div><div>inputstr='\</div> <div>73167176531330624919225119674426574742355349194934\</div> <div>96983520312774506326239578318016984801869478851843\</div> <div>85861560789112949495459501737958331952853208805511\</div> <div>12540698747158523863050715693290963295227443043557\</div> <div>66896648950445244523161731856403098711121722383113\</div> <div>62229893423380308135336276614282806444486645238749\</div> <div>30358907296290491560440772390713810515859307960866\</div> <div>70172427121883998797908792274921901699720888093776\</div> <div>65727333001053367881220235421809751254540594752243\</div> <div>52584907711670556013604839586446706324415722155397\</div> <div>53697817977846174064955149290862569321978468622482\</div> <div>83972241375657056057490261407972968652414535100474\</div> <div>82166370484403199890008895243450658541227588666881\</div> <div>16427171479924442928230863465674813919123162824586\</div> <div>17866458359124566529476545682848912883142607690042\</div> <div>24219022671055626321111109370544217506941658960408\</div> <div>07198403850962455444362981230987879927244284909188\</div> <div>84580156166097919133875499200524063689912560717606\</div> <div>05886116467109405077541002256983155200055935729725\</div> <div>71636269561882670428252483600823257530420752963450'</div> <div><br /></div> <div>def CutOneLine(onelinestr):</div> <div> ## i: one line str</div> <div> ## o: list of 5position num strs</div> <div> fivenumlist=[]</div> <div> for i in range(0,int(len(onelinestr)/5)):</div> <div> fivenumlist.append(onelinestr[i*5:(i*5)+5])</div> <div> return fivenumlist</div> <div><br /></div> <div>def MultNum(fivenumstr):</div> <div> ## i: one 5position num str</div> <div> ## o: mult of them (num)</div> <div> result=1</div> <div> for i in range(5):</div> <div> result=result*int(fivenumstr[i])</div> <div> return result</div> <div><br /></div> <div>##main func:</div> <div>lisofnum=CutOneLine(inputstr)</div> <div>lisofmultnum=[]</div> <div><br /></div> <div>for i in range(len(lisofnum)):</div> <div> lisofmultnum.append(MultNum(lisofnum[i]))</div> <div><br /></div> <div>print(max(lisofmultnum))</div></div> <div><br /></div> <div>이렇게 실행하니 31752 가 나오더라고요</div> <div>변수 lisofnum이나 lisofmulnum 값을 직접 봐도 의도대로 돌아가는거 같은데ㅠㅠ</div> <div><br /></div> <div>그런데 답은 40824 라고 하네요</div> <div><br /></div> <div>구글링 해본 답안 코드를 보니 </div> <div><br /></div> <div><div>num = '\</div> <div>73167176531330624919225119674426574742355349194934\</div> <div>96983520312774506326239578318016984801869478851843\</div> <div>85861560789112949495459501737958331952853208805511\</div> <div>12540698747158523863050715693290963295227443043557\</div> <div>66896648950445244523161731856403098711121722383113\</div> <div>62229893423380308135336276614282806444486645238749\</div> <div>30358907296290491560440772390713810515859307960866\</div> <div>70172427121883998797908792274921901699720888093776\</div> <div>65727333001053367881220235421809751254540594752243\</div> <div>52584907711670556013604839586446706324415722155397\</div> <div>53697817977846174064955149290862569321978468622482\</div> <div>83972241375657056057490261407972968652414535100474\</div> <div>82166370484403199890008895243450658541227588666881\</div> <div>16427171479924442928230863465674813919123162824586\</div> <div>17866458359124566529476545682848912883142607690042\</div> <div>24219022671055626321111109370544217506941658960408\</div> <div>07198403850962455444362981230987879927244284909188\</div> <div>84580156166097919133875499200524063689912560717606\</div> <div>05886116467109405077541002256983155200055935729725\</div> <div>71636269561882670428252483600823257530420752963450'</div> <div><br /></div> <div>biggest = 0</div> <div>i = 0</div> <div>while i < len(num) - 4:</div> <div> one = int(num[i])</div> <div> two = int(num[i+1])</div> <div> thr = int(num[i+2])</div> <div> fou = int(num[i+3])</div> <div> fiv = int(num[i+4])</div> <div> product = one*two*thr*fou*fiv</div> <div> if product > biggest:</div> <div> biggest = product</div> <div> i = i + 1</div> <div>print(biggest)</div> <div><br /></div> <div>elapsed = (time.time() - start)</div> <div>print("This code took: " + str(elapsed) + " seconds")</div></div> <div><br /></div> <div>이렇게 되어 있는데 이걸 봐도 제 코드가 어디서 잘못됐는지 모르겠더라고요ㅠㅠ</div> <div><br /></div> <div>비천한 실력에 송구하게나마 질문 올립니다 ㅠㅠ</div> <div>즐거운 하루 되세요ㅎㅎ</div> <div><br /></div> <div><br /></div> <div><br /></div>
대처인줄 알았는데 까보니 사라 페일린 ㅋㅋㅋ
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.