DP 를 사용하는 Sherlock and Cost
난 못풀었다ㅜ 코드는 설명을 듣고 Clojure로 구현한 코드.
(defn abs [x] (max (- x) x))
(defn fun ([v] (fun v 0 0))
( [v dp1 dp2]
(if (= (count v) 1)
(max dp1 dp2)
(let [f (first v)
s (second v)
dp1-re (max dp1 (+ dp2 (abs (- 1 f))))
dp2-re (max (+ dp1 (abs (- 1 s))) (+ dp2 (abs (- f s))))]
(recur (rest v) dp1-re dp2-re)))))
(defn cost [B]
(fun B)
)
"1개를 제외하고 나머지에 1씩 더한다" 이것을 "1개만 1을 뺀다" 와 같이 생각하는 것이 포인트..
728x90
'프로그래밍 기술 노트 > Problem Solving' 카테고리의 다른 글
[PS/C#] HackerRand - Algorithms - The Maximum Subarray (0) | 2020.11.03 |
---|---|
[PS/Clojure] HackerRand - Algorithms - Queen's Attack (0) | 2020.06.10 |
[PS/Clojure] HackerRand - Algorithms - Absolute Permutation (0) | 2020.06.08 |
[PS/Clojure] HackerRand - Algorithms - Forming a Magic Square (0) | 2020.06.05 |
[PS/Clojure] HackerRand - Algorithms - Equal (0) | 2020.06.05 |