생성일: 2019년 11월 10일
수정일: 2022년 10월 10일
수정일: 2022년 10월 10일
4clojure - Maximum value (38)
문제
(= (__ 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로 임시 저장되는 방식이다.