{{{~cpp find = [n+1|n <- [1..], (n*(n+1)/2) <= 3000 <= ((n+1)*(n+2)/2)] }}} 풀이 => n의 범위를 무한대의 자연수로 잡고, n까지의 합과 n+1까지의 합 사이에 3000이 들어가는 그러한 n+1을 찾아보려고 식을 저렇게 썼습니다. 최대한 haskell로 짜보려고 노력했는데 안되네요... 조건 제시법을 쓰는 방법이 잘못된건지... 아니면 수식에서 어딘가 잘못 쓴 부분이 있는 건지... -> 파싱 에러, 즉 구문 에러가 나는 코드입니다. (<=) 함수가 어떤 전달인자를 받는지 알아보세요. while 문을 쓰는 것이 필수 보조조건이었는데 haskell도 while문 쓰는 법이 있나요? -> 그러고 보니 while 함수를 만들어서 써도 되겠다는 생각이.. 아니면 다른 대부분의 맴버들처럼 C나 C++로 하는게 더 나은가요? ---- Haskell에서 굳이 반복이란 개념을 사용하지 않아도 되잖아요?ㅋㅋ [최소정수의합/임인택2] 도 한 번 보세요. ---- C++로 한번 짜봤슴다. {{{~cpp #include using std::cout; using std::endl; int main() { int sum = 0, integer = 1; while(sum <= 3000) { sum = sum + integer; integer++; } cout << "The smallest 'n' for making the number what we want" << endl; cout << "-->" << integer << endl; cout << "Total sum is " << sum << endl; return 0; } }}} 9/24 가드 (|)를 써서 조건문 형식으로 다시 짰습니다. {{{~cpp little_sum (x:xs) y |y <= 0 = 0 |otherwise = x + little_sum xs (y-x) }}} 근데 이렇게만 하면 구하려는 최소 정수값을 알 수가 없어서 요리조리 해보려고 했는데 잘 모르겠슴다...-_-;