생성일: 2019년 11월 27일
수정일: 2023년 07월 26일
수정일: 2023년 07월 26일
4clojure - Partition a Sequence (54)
문제
(= (__ 3 (range 9)) '((0 1 2) (3 4 5) (6 7 8)))
(= (__ 2 (range 8)) '((0 1) (2 3) (4 5) (6 7)))
(= (__ 3 (range 8)) '((0 1 2) (3 4 5)))
제한 : partition, partition-all
풀이
(fn [x coll]
(loop [result [] coll2 coll]
(if (or (empty? coll2) (> x (count coll2))) result
(recur (conj result (take x coll2)) (drop x coll2)))))
take, drop을 이용하여 파티션을 나누는 문제 이다. 좀 복잡해 보이기는 하지만 원리는 비슷하다고 생각한다. 좀 더 짧게 할 수 있는 방법이 있을까? 해서 다른 사람이 풀어논 문제를 봤지만 비슷하게 다들 해결을 해서 뭔가 획기적인 그런 것은 없었다.