본문 바로가기
개발/알고리즘 문제

[Project Euler 40] 어떤 무리수에서 소수점 n번째 자리 숫자 알아내기

by 유다110 2016. 5. 6.
반응형

소수점 뒤에 양의 정수를 차례대로 붙여 나가면 아래와 같은 무리수를 만들 수 있습니다.


0.123456789101112131415161718192021...


이 무리수의 소수점 아래 12번째 자리에는 1이 옵니다 (위에서 붉게 표시된 숫자).

소수점 아래 n번째 숫자를 dn이라고 했을 때, 아래 식의 값은 얼마입니까?


d1 × d10 × d100 × d1000 × d10000 × d100000 × d1000000


꽤나 간단한 문제였는데 푸는 데는 좀 걸렸다.

식 자체는 바로 냈는데 그 식이 3분 넘게 걸린다는 게 문제였지...


처음엔 양의 정수를 뒤에 붙일 때마다 리스트에 추가하고, ''.join() 으로 나열했는데 이게 시간을 어마무지하게 잡아먹었다.

내가 삽질했다는 걸 깨닫고 나서 그냥 str로 계속 플러스 플러스...

오일러 38번에서도 이런식으로 type변환하느라 시간이 들었는데, 앞으로 조심해야겠다.


두 번째 식인 multiply_nth_num()은 그냥 개인 취향에 따라 만들었다.

손으로 일일이 써서 구해도 꽤 깔끔해 보임.

반응형

댓글