생성일: 2019년 11월 10일
수정일: 2022년 10월 10일

4clojure - Maximum value (38)

  1. 문제
  2. 풀이1
  3. 풀이2
  4. 풀이3

문제

(= (__ 1 8 3 4) 8)

(= (__ 30 20) 30)

(= (__ 45 67 11) 67)

풀이1

(fn [x & xs]
  (loop [ls xs big x]
    (cond (empty? ls) big
          (> big (first ls)) (recur (rest ls) big)
          :else (recur (rest ls) (first ls)))))

풀이2

(fn [& x] (last (sort x)))

주어지는 값에서 가장 큰 값을 찾는 문제이다. 예전에 풀었을 때는 너무 길게 풀이를 했었는데 간단한 방법이 있다. sort 후 last 값을 가져오면 가장 큰 값을 가져올 수 있다. 그런데 가변인수를 하는 방법을 몰라서 헤메다가 &를 사용하면 가변 인수라는 것을 알게 되어 또다른 해결책을 만들었다.

풀이3

reduce를 사용하여 푸는 방법도 있다.

(reduce #(if (> % %2) % %2) xs)

reduce의 동작을 이용하여 %값이 크면 %로 저장하고, %2가 크면 %2로 임시 저장되는 방식이다.

Tags: 4clojure Today I Learn