반응형
숫자 192에 1, 2, 3을 각각 곱합니다.
192 × 1 = 192
192 × 2 = 384
192 × 3 = 576
곱한 결과를 모두 이어보면 192384576 이고, 이것은 1 ~ 9 팬디지털(pandigital)인 숫자입니다. 이런 과정을 편의상 '곱해서 이어붙이기'라고 부르기로 합니다.
같은 식으로 9와 (1, 2, 3, 4, 5)를 곱해서 이어붙이면 918273645 라는 1 ~ 9 팬디지털 숫자를 얻습니다.
어떤 정수와 (1, 2, ... , n)을 곱해서 이어붙였을 때 얻을 수 있는 가장 큰 아홉자리의 1 ~ 9 팬디지털 숫자는 무엇입니까? (단 n > 1)
이 문제를 풀려고 미뤄뒀던 32번 팬디지털 문제를 풀었다.
예전에는 끙끙거리면서 결국 못 풀었는데 요즘 그래도 늘고 있는지 둘 다 한 번에 풀었다.
근데 둘이 다른 방식으로 풀었다는 게 함정.(둘 다 어딘지 허술하다는 것도...)
컴파일은 0.03초 걸린다.
먼저 수도코드
짜다가 감이 잡혀서 그냥 코드로 넘어가서, 중간에 끊겼다.
근데 이번엔 type 변환을 너무 많이 썼다.
최대한 줄이려고 해봤는데...
그래도 스레드에서 다른 사람의 답을 참고해서, for loop를 while문으로 바꿔 코드를 한 줄이나마 줄였다.
반응형
'개발 > 알고리즘 문제' 카테고리의 다른 글
[Project Euler 40] 어떤 무리수에서 소수점 n번째 자리 숫자 알아내기 (955) | 2016.05.06 |
---|---|
[Project Euler 39] 가장 많은 직각삼각형이 만들어지는 둘레(≤ 1000)의 길이는? (4) | 2016.05.05 |
[Project Euler 32] 1~9 팬디지털 곱셈식을 만들 수 있는 모든 수의 합 (0) | 2016.05.02 |
[Project Euler 37] 왼쪽이나 오른쪽에서 한자리씩 없애가도 여전히 소수인 수의 합은? (0) | 2016.04.29 |
[Project Euler 36] 10진법과 2진법으로 모두 대칭수인 1,000,000 이하 숫자의 합 (0) | 2016.04.27 |
댓글