생성일: 2019년 11월 21일
수정일: 2023년 07월 19일

4clojure - Split a sequence (49)

  1. 문제
  2. 풀이

문제

(= (__ 3 [1 2 3 4 5 6]) [[1 2 3] [4 5 6]])

(= (__ 1 [:a :b :c :d]) [[:a] [:b :c :d]])

(= (__ 2 [[1 2] [3 4] [5 6]]) [[[1 2] [3 4]] [[5 6]]])

제한 : split-at

풀이

(fn [n l]
  (list (take n l) (drop n l)))

첫번째 매개변수의 숫자 만큼 첫번째 부분에 두어 2개로 나누는 문제이다. 즉 3일때 [1 2 3 4 5 6]이라면 [1 2 3] [4 5 6]이 되고 1이라면 [1] [2 3 4 5 6]이 되는 것이다. take로 앞의 갯수 만큼의 원소를 가져오고, drop으로 뒤 갯수 만큼의 원소를 남긴다. 그것을 list로 조합하면 되는 문제 이다. 다시 보니까 알겠지만 처음에 이 문제를 봤다면 어떠한 과정으로 문제를 접근 해야하는지 고민이 될 것 같긴 하다.

다른 사람들은 juxt를 이용해서 문제를 풀었던데 이것에 대해서도 공부가 필요하다.

Tags: 4clojure Today I Learn