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

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

mhko411 2021. 8. 6. 13:40
728x90

https://programmers.co.kr/learn/courses/30/lessons/12948

 

코딩테스트 연습 - 핸드폰 번호 가리기

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자

programmers.co.kr


접근

번호를 하나씩 탐색하여 번호의 길이에서 마지막 4자리를 제외한 만큼은 별표로 문자에 추가하고 별표를 모두 추가했다면 번호를 추가하도록 구현하였다.

 

구현

- map 함수를 구현하여 폰 번호에서 하나의 번호씩 넘겨질 수록 하고 

- filter에서는 최종 반환할 문자열인 result의 사이즈가 별의 개수보다 적을 때 별을 추가하고

- 이상일 때는 번호를 추가하도록 한다.

- 최종적으로 만들어진 번호를 반환한다.

function* map(phone_number) {
    for(let number of phone_number) yield number;
}

function filter(phone_number, star_size) {
    let result = '';
    for (let number of phone_number) {
        if(size(result) < star_size) {
            result += '*';
        }
        else result += number;
    }
    return result;
}

function size(s){
    return s.length;
}

function solution(phone_number) {
    let answer = '';
    let star_size = phone_number.length - 4;
    answer = filter(map(phone_number), star_size);
    return answer;
}