생성일: 2019년 11월 27일
수정일: 2023년 07월 26일

4clojure - Partition a Sequence (54)

  1. 문제
  2. 풀이

문제

(= (__ 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을 이용하여 파티션을 나누는 문제 이다. 좀 복잡해 보이기는 하지만 원리는 비슷하다고 생각한다. 좀 더 짧게 할 수 있는 방법이 있을까? 해서 다른 사람이 풀어논 문제를 봤지만 비슷하게 다들 해결을 해서 뭔가 획기적인 그런 것은 없었다.

Tags: 4clojure Today I Learn