생성일: 2019년 10월 26일
수정일: 2023년 10월 01일

4clojure - Reverse a Sequence (23)

  1. 문제
  2. 풀이

문제

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

(= (__ (sorted-set 5 7 2 7)) '(7 5 2))

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

제한: reverse, rseq

풀이

(fn [x]
  (reduce (fn [acc e] (conj acc e)) '() x))

reverse, rseq를 사용하지 않고 순서를 뒤집는 동작을 작성하는 문제 이다. 나는 reduce를 사용하여 list의 conj 동작이 들어오는 순서대로 첫번째로 추가되는 원리를 이용하여 문제를 해결 하였다 into를 이용하여 문제를 푸는 방식도 있다.

into의 실행 방식은 결과 collection의 형태에 따라서 다르다.

(into [] [1 2 3 4 5])
;; [1 2 3 4 5]

(into () [1 2 3 4 5])
;; (5 4 3 2 1)

즉, conj + collection 의 조합이다.

hash-map으로는 조금 다르게도 사용 가능하다

(into {} [{:a 1} {:b 2}])
;; {:a 1 :b 2}
Tags: 4clojure Today I Learn