본문 바로가기

getContents

데이터를 입력받는 방법 - 1 이번 시간에는 기본 입출력 액션에 대해서 살펴보자. 컴퓨터 프로그램이 하는 일을 일반화해보면 주어진 자료를 처리하여 그 결과를 내놓는 것이다. 여기서 "자료가 주어진다"는 것은 소스코드에 정적으로 포함된 데이터만 처리하는 것이 아니라 (물론 이렇게 동작하는 프로그램도 많다. 초보들이 연습용으로 작성하는 코드들 대부분이 여기에 속한다.) 외부로 부터 데이터를 입력받을 수 있다는 것이다. 외부로부터의 데이터 입력이란 키보드로부터 문자열을 입력 받거나, 텍스트 파일을 읽어들이거나, 혹은 외부 네트워크에 요청하여 데이터를 받아올 수도 있다는 의미이다. 대응해야 하는 케이스가 엄청 많은 것 같지만, 이로부터 유발되는 혼란을 피하기 위해서 우리의 선조(?) 아키텍트들은 프로그램이 외부와 소통하는 창구를 표준화하였다.. 더보기
리스트의 각 원소를 복제하기 원문 : https://www.hackerrank.com/challenges/fp-list-replication/problem 이번 문제는 리스트 복제와 관련된 문제이다. replicate를 이용해서 특정한 타입의 값을 N회 반복하는 리스트로 만드는 것을 응용한다. 문제에서는 아래와 같은 스텁이 주어진다. main :: IO () main = getContents >>= mapM_ print . (\(n:arr) -> f n arr) . map read . words f n arr = -- implement this function 접근 일단 문제에 집중하자. 문제는 일련의 숫자가 (한 줄에 하나씩) 주어졌을 때, 맨 첫 숫자만큼 각 숫자를 반복한 리스트를 만드는 것이다. 편의상 한 칸에 하나의 숫자를 .. 더보기