Skip to content

Commit 1bcdb79

Browse files
committed
프로그래머스 문제 풀이 (찬호)
1 parent 0f709be commit 1bcdb79

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

haskell/haskell.cabal

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,10 @@ executable programmers
6363
main-is: Main.hs
6464
hs-source-dirs: src/main/haskell/programmers
6565
build-depends: base
66-
default-language: Haskell2010
66+
default-language: Haskell2010
67+
68+
executable programmers2
69+
main-is: Main2.hs
70+
hs-source-dirs: src/main/haskell/programmers
71+
build-depends: base
72+
default-language: Haskell2010
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
module Main where
2+
3+
import Data.List
4+
-- progresses speeds return
5+
--[93,30,55] [1,30,5] [2,1]
6+
7+
--[94, 60, 60]
8+
--[95, 90, 65]
9+
--[96, 120, 70]
10+
--[97, 120, 75]
11+
--[98, 120, 80]
12+
--[99, 120, 85]
13+
--[100, 120, 90] -> 2
14+
--[100, 120, 95]
15+
--[100, 120, 100] -> 1
16+
17+
main:: IO()
18+
main = do
19+
print [fst prog + speed | prog <- zip [93, 30, 55] [0..],
20+
let speed = [1, 30, 5] !! snd prog]
21+
print $ doDay [93, 30, 55] [1,30,5] []
22+
print $ solution2 [93,30,55] [1,30,5]
23+
24+
doDay::[Int]->[Int]->[Int]->[Int]
25+
doDay [] [] acc = reverse acc
26+
doDay p s acc = let dt = map (\(a,b)->a+b) (zip p s)
27+
finCnt = length $ takeWhile (>=100) dt
28+
in
29+
if finCnt == 0
30+
then doDay dt s acc
31+
else doDay (drop finCnt dt) (drop finCnt s) (finCnt:acc)
32+
33+
solution2::[Int]->[Int]->[Int]
34+
solution2 p s = let dt = map (\(a,b)-> ceiling ((realToFrac (100 - a)) / (realToFrac b))) (zip p s)
35+
in map (\a -> length a) $ groupBy (\a b -> a >= b) dt

0 commit comments

Comments
 (0)