형태의 자연수에 대해 자릿수 합의 최대값 구하기
문제 16에서 만든 pow
함수를 이용하면 문제를 쉽게 풀 수 있다.
(ns p056
(:require [util :refer (pow digits)]))
(defn solve []
(->> (for [a (range 1 100) b (range 1 100)] (pow a b))
(map digits)
(map #(apply + %))
(apply max)))
여기서 사용한 pow
함수는 Clojure의 BigInt
를 사용하는데, 이는 문제의 의도를 회피한 것이라 할 수 있다. 문제 20에서 사용했던 방법을 응용해 를 숫자 시퀀스로 바꾼 다음 거듭제곱을 구하는 방법을 생각할 수 있겠지만, 여기서는 시도하지 않는다.
참고
- 프로젝트 오일러 56 풀이 소스 코드
- 프로젝트 오일러 20
BigInt
를 쓰지 않고 큰 수를 숫자 시퀀스로 바꿔 계산하는 방법을 설명한다. - 프로젝트 오일러 16
pow
함수 구현 방법에 대해 설명했다.