이번 문제는 필터링에 관한 문제이다. 주어진 리스트와 X에 대해서 X보다 작은 값으로 리스트를 필터링한다. 문제 자체는 매우 간단하다.
원문: https://www.hackerrank.com/challenges/fp-filter-array/problem
스텁
문제에서 제공되는 스텁이다.
main :: IO ()
main = do
n <- readLn :: IO Int
inputData <- getContents
let numbers = map read . (lines inputData) :: [Int]
putStrLn . unlines $ (map show . f n) numbers
f :: Int -> [Int] -> [Int]
풀이
함수 f를 작성해야 한다. 함수 f는 정수와 정수의 리스트를 받아, 첫 인자보다 작은 정수만으로 필터링된 결과를 리턴한다. 이는 filter
함수 그자체의 사용이다.
f n arr = filter (< n) arr
최종 main 함수를 풀어보면
readLn
함수로n
을 얻는다.getContents
를 이용해서inputData
에 바인딩한다.inputData
를 행별로 쪼개고 정수로 읽어들여서number
로 만든다.numbers
에 대해서f n
을 적용하고 다시show
를 사상해서 텍스트로 만든다.- 이후
unlines
를 이용해서 여러 행짜리 문자열로 묶은 후 출력했다.