트랙
/
Elixir
Elixir
/
연습 문제
/
배열 연산
배열 연산

배열 연산

보통

지침

기본적인 배열 연산을 구현해요.

함수형 언어에서는 length, map, reduce 같은 배열 연산을 아주 흔하게 사용해요. 기존 함수를 사용하지 않고, 일련의 기본적인 배열 연산을 직접 구현해요.

구현할 연산의 정확한 개수와 이름은 기존 이름과의 충돌을 피하기 위해 track마다 달라요. 하지만 일반적으로 구현하게 될 연산은 다음과 같아요:

  • append (주어진 두 배열에서, 두 번째 배열의 모든 항목을 첫 번째 배열의 끝에 추가해요);
  • concatenate (주어진 여러 배열의 모든 항목을 하나로 평탄화한 배열로 합쳐요);
  • filter (주어진 술어와 배열에서, predicate(item)이 True인 모든 항목의 배열을 반환해요);
  • length (주어진 배열의 전체 항목 개수를 반환해요);
  • map (주어진 함수와 배열에서, 모든 항목에 function(item)을 적용한 결과의 배열을 반환해요);
  • foldl (주어진 함수, 배열, 초기 누적자를 받아, 왼쪽부터 각 항목을 누적자에 접어 넣어요(누적해요));
  • foldr (주어진 함수, 배열, 초기 누적자를 받아, 오른쪽부터 각 항목을 누적자에 접어 넣어요(누적해요));
  • reverse (주어진 배열의 모든 원래 항목을 뒤집힌 순서로 담은 배열을 반환해요).

참고로, fold 함수(foldl, foldr)에 인자가 전달되는 순서는 중요해요.

Elixir 관련 변경 사항

이 연습 문제에 대한 위 설명은 모든 Exercism 트랙에서 공유해요.

Elixir의 표준 라이브러리와 일관성을 맞추기 위해, foldl과 foldr에 사용하는 함수는 항목을 첫 번째 인자로, 누산기를 두 번째 인자로 받아야 해요.

또한 자동으로 임포트되는 함수 Kernel.length/1과 충돌하지 않도록, 길이를 세는 함수는 대신 count라는 이름을 써요.

느린 테스트

이 연습 문제의 테스트 중 하나 이상에는 :slow 태그가 붙어 있어요. 끝나는 데 오랜 시간이 걸릴 수 있기 때문이에요. 그래서 이런 테스트는 플랫폼에서 자동 테스트 실행기가 실행하지 않아요. 플랫폼의 웹 에디터에서 바로 이 연습 문제를 풀고 있다면, 이 연습 문제를 내 컴퓨터로 내려받아서 푸는 것도 고려해 봐요. 그러면 모든 테스트를 실행하고 내 풀이가 얼마나 효율적인지도 확인할 수 있어요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Elixir Exercism

배열 연산 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Elixir 트랙을 개념 58개연습 문제 168개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.

배열 연산 깊이 살펴보기!

재귀를 실용적으로 소개하는 내용을 즐기면서, 배열 연산의 명령형 및 함수형 대안을 살펴보고, 꼬리 호출 재귀와 누산기 함수까지 깊이 파고들어요.