프로그래밍/함수형 프로그래밍 11

[함수형 프로그래밍] if문과 for문

함수형 프로그래밍에서 if문과 for문 사용을 지양해야 한다고 책에서 읽고 공부를 하였다. 하지만 왜 그래야 하는 것인지 오랫동안 이해되지 않았고 시간이 지난 후에 다시 함수형 프로그래밍에 대해서 공부를하니 조금씩 이해가되어 정리를 하려고 한다. 10명의 사람들이 있다고 가정해보자. 여기서 각 사람들의 나이와 이름을 알고있고 10명의 사람 중에서 20살 이상인 사람들의 이름을 알아보려고한다. 이를 코드로 작성해보고 함수형 프로그래밍을 발전시키면서 if문과 for문을 왜 사용하면 안되는지 이해해보자. const personList = [ { age: 17, name: "alex" }, { age: 15, name: "paul" }, { age: 21, name: "harry" }, { age: 27, na..

[함수형 프로그래밍 연습하기] 프로그래머스 Lvel1 - 문자열 내 p와 y의 개수

https://programmers.co.kr/learn/courses/30/lessons/12916 코딩테스트 연습 - 문자열 내 p와 y의 개수 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 programmers.co.kr 접근 먼저 입력받은 문자열을 모두 소문자로 변환한다. 그리고 한 개의 문자와 문자열을 전달받아 문자열 내의 문자의 개수를 반환하는 함수를 만들었다. 이후 반환된 개수를 변수에 저장하고 두 개의 변수를 비교하여 같으면 true, 다르면 false를 반환한다. 구현 - 입력받은 문자열 s를 소문..

[함수형 프로그래밍 연습하기] 프로그래머스 Level1 - 나누어 떨어지는 숫자 배열

https://programmers.co.kr/learn/courses/30/lessons/12910 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하 programmers.co.kr 접근 배열 내의 숫자 중 divisor로 나누어서 떨어지는 숫자를 새로운 배열에 저장하도록 하였다. 이후 배열이 비어있을 때는 -1을 추가하고 오름차순으로 정렬한다. 구현 - 먼저 map 함수를 통해 숫자들을 하나씩 filter로 전달할 수 있도록한다. - 해당 수가 나누어 떨어지는지 isPos..

[함수형 프로그래밍 연습하기] 프로그래머스 Level1 - 제일 작은 수 제거하기

https://programmers.co.kr/learn/courses/30/lessons/12935 코딩테스트 연습 - 제일 작은 수 제거하기 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1 programmers.co.kr 접근 먼저 배열 내에서 제일 작은 수를 찾는다. 이후 배열 내에서 제일 작은 수를 제거한 나머지의 수들을 반환하도록 한다. 반환된 배열이 비어있다면 -1을 추가하도록 하였다. 여기서 제일 작은 수를 제거하기 위해 filter 함수를 만들었는데 각 함수들은 한 개의 기능만 해야한다. 하지만 filter 함수에 배열이..

[함수형 프로그래밍 연습하기] 프로그래머스 Level1 - 완주하지 못한 선수

https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 접근 입력받은 참가한 사람들과 완주한 사람들을 이름순으로 정렬하고 순서대로 비교한다. 이름이 다를 경우 참가한 사람의 이름이 완주하지 못한 것이기 때문에 해당 이름을 반환한다. 위에서 탐색을 진행했을 때도 다른 이름이 없을 때는 마지막 사람의 이름을 반환한다. 구현 - 먼저 참가자와 완주한 사람들을 정렬한다. - find 함수에 참가, 완주한..

[함수형 프로그래밍 연습하기] 프로그래머스 Level1 - 핸드폰 번호 가리기

https://programmers.co.kr/learn/courses/30/lessons/12948 코딩테스트 연습 - 핸드폰 번호 가리기 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자 programmers.co.kr 접근 번호를 하나씩 탐색하여 번호의 길이에서 마지막 4자리를 제외한 만큼은 별표로 문자에 추가하고 별표를 모두 추가했다면 번호를 추가하도록 구현하였다. 구현 - map 함수를 구현하여 폰 번호에서 하나의 번호씩 넘겨질 수록 하고 - filter에서는 최종 반환할 문자열인 result의 사이즈가 별의 개수보다 적을 때 별을 추가하고 - 이상..

[함수형 프로그래밍 연습하기] 프로그래머스 Level1 - 평균 구하기

https://programmers.co.kr/learn/courses/30/lessons/12944 코딩테스트 연습 - 평균 구하기 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 입출력 예 arr programmers.co.kr 접근 평균을 구하기위해 숫자들의 합을 구하는 함수와 합을 이용하여 평균을 구하는 함수를 구현하여 활용하였다. 구현 - 숫자들의 합을 구하기위해 arr을 함수 sum에 전달한다 - 이후 위에서 구한 합과 숫자의 개수를 average 함수에 전달하여 평균을 구한다. function sum(numbers) ..

[함수형 프로그래밍 연습하기] 프로그래머스 Level1 - 같은 숫자는 싫어

https://programmers.co.kr/learn/courses/30/lessons/12906 코딩테스트 연습 - 같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 programmers.co.kr 접근 기본적으로 스택을 활용하였다. 숫자들을 탐색하면서 현재 숫자와 스택의 top을 비교한다. 만약 stack의 top과 현재 숫자가 다를 때는 숫자를 스택에 추가하고 같을 때는 추가하지 않는다. 최종적으로 stack을 반환한다. 구현 - filter라는 함수를 만들었고 빈 배열과 arr을 넘긴다. - 빈 배열은 스택으로 활용된다. f..

함수형 프로그래밍의 특징 (1)

함수형 프로그래밍의 특징은 다음과 같다. 순수 함수 상태를 공유하지 않으며 변화를 감소한다. 데이터의 제어 흐름과 연산을 추상화하여 선언적으로 작성한다. Side Effect 지금까지 파악한 특징은 위와 같다. 아직은 함수형 프로그래밍의 특징을 완벽히 이해하지 못했지만 하나씩 파악해가면서 함수형 프로그래밍에 대해 이해해보고자 한다. 순수 함수 첫 번째로 순수 함수에 대해서 알아보려고 한다. 순수 함수의 특징은 다음과 같다. 동일한 인자를 전달하면 항상 동일한 결과를 반환한다. 외부 상태를 변경하지 않는다. 두 개의 수를 인자로 받아서 더하는 함수를 작성해보자. 아래의 함수는 동일한 인자를 전달했을 때 항상 동일한 결과를 반환하며 함수 스코프 밖의 상태에 영향을 끼치지않기 때문에 순수 함수라고 볼 수 있다..

[함수형 프로그래밍 연습하기] 프로그래머스 Level1 - 가운데 글자 가져오기

https://programmers.co.kr/learn/courses/30/lessons/12903 코딩테스트 연습 - 가운데 글자 가져오기 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret programmers.co.kr solution 함수 자체가 가운데 글자를 가져오는 것이기 때문에 문자열의 길이가 홀수인지 짝수인지를 판단하여 홀수일 때는 가운데 한글자만 짝수일 때는 두 글자를 반환하도록 하였다. 이때 홀수, 짝수를 판별할 때 if(n % 2)를 사용할 수 있겠지만 함수형 프로그래밍에서는 if(isOdd(n)) 처럼 사용하도록한다. 구현..

728x90
반응형