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

[Project Euler 38] 어떤 수에 (1, 2, ... )를 곱해서 이어붙여 얻을 수 있는 가장 큰 1 ~ 9 팬디지털 숫자

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

숫자 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문으로 바꿔 코드를 한 줄이나마 줄였다.


반응형

댓글