반응형
소수점 뒤에 양의 정수를 차례대로 붙여 나가면 아래와 같은 무리수를 만들 수 있습니다.
0.123456789101112131415161718192021...
이 무리수의 소수점 아래 12번째 자리에는 1이 옵니다 (위에서 붉게 표시된 숫자).
소수점 아래 n번째 숫자를 dn이라고 했을 때, 아래 식의 값은 얼마입니까?
d1 × d10 × d100 × d1000 × d10000 × d100000 × d1000000
꽤나 간단한 문제였는데 푸는 데는 좀 걸렸다.
식 자체는 바로 냈는데 그 식이 3분 넘게 걸린다는 게 문제였지...
처음엔 양의 정수를 뒤에 붙일 때마다 리스트에 추가하고, ''.join() 으로 나열했는데 이게 시간을 어마무지하게 잡아먹었다.
내가 삽질했다는 걸 깨닫고 나서 그냥 str로 계속 플러스 플러스...
오일러 38번에서도 이런식으로 type변환하느라 시간이 들었는데, 앞으로 조심해야겠다.
두 번째 식인 multiply_nth_num()은 그냥 개인 취향에 따라 만들었다.
손으로 일일이 써서 구해도 꽤 깔끔해 보임.
반응형
'개발 > 알고리즘 문제' 카테고리의 다른 글
[try helloworld level 2] 행렬의 곱셈 (577) | 2016.06.02 |
---|---|
[try helloworld level 1] 최대공약수와 최소공배수 (6) | 2016.06.02 |
[Project Euler 39] 가장 많은 직각삼각형이 만들어지는 둘레(≤ 1000)의 길이는? (4) | 2016.05.05 |
[Project Euler 38] 어떤 수에 (1, 2, ... )를 곱해서 이어붙여 얻을 수 있는 가장 큰 1 ~ 9 팬디지털 숫자 (122) | 2016.05.04 |
[Project Euler 32] 1~9 팬디지털 곱셈식을 만들 수 있는 모든 수의 합 (0) | 2016.05.02 |
댓글