More actions
1차
매우 마음에 들지 않는 방법...
minsum s n
| sum [1..n] < s = minsum s (n+1)
| otherwise = (n, sum [1..n])
2차
sum을 공식을 이용했지만...여전히 마음에 들지 않아요
naturalSum n = n * (n+1) `div` 2
minsum s n
| naturalSum n < s = minsum s (n+1)
| otherwise = (n, naturalSum n)
minsum 3000 1
3차
최소정수의합/송지훈 방식, 조건제시법과 lazy evaluation 이용
take 1 [(n,naturalSum n)| n<-[1..], naturalSum n >= s]