-
[알고리즘/자바스크립트] 마지막 4글자 제외하고 #으로 치환하기 (Credit Card Mask)Algorithm 2019. 2. 17. 22:53
-해당 문제는 codewars사이트의 level7 문제입니다. (1~8단계 중 8단계가 가장 쉬운 레벨)-
[문제] Usually when you buy something, you're asked whether your credit card number, phone number or answer to your most secret question is still correct. However, since someone could look over your shoulder, you don't want that shown on your screen. Instead, we mask it.
Your task is to write a function maskify, which changes all but the last four characters into '#'.
Examples
maskify("4556364607935616") == "############5616"
maskify( "64607935616") == "#######5616"
maskify( "1") == "1"
maskify( "") == ""
// "What was the name of your first pet?"
maskify("Skippy") == "##ippy"
maskify("Nananananananananananananananana Batman!") == "####################################man!"
[해석] 신용카드 번호나 비밀번호 등과 같은 중요한 개인 정보들을 잘 가려주어야 한다. 보안상의 이유로!
그래서 우리는 스크린에 그런 정보들을 표시할 때 마지막 4글자를 제외하고 전부 #으로 바꿔서 보여주려고 한다.
다만 4글자 이하의 글자는 원문 그대로 return시키고 공백인 경우 그대로 공백을 return시키자.
나의 풀이는 다음과 같다.
function maskify(cc) { var len = cc.length if (len <= 4) { return cc } else { var piece = cc.slice(len-4, len) var newSt = ''; for(var i=0; i<len-4; i++) { newSt += '#' } return newSt += piece } }
1) 일단 4글자 이하의 문자는 원문 그대로 return 시켜야한다.
그러니까 원본 string인 cc의 length를 구해서 4보다 작은 경우엔 그대로 cc를 return 시킨다.
2) 4글자보다 큰 cc는 piece라는 변수를 만들어서 마지막 4글자만 자른다.
slice()함수를 사용했다. slice( x, y )는 x번째 글자부터 y번째 글자까지 잘라서 리턴해준다.
그러니까 len-4부터 len까지 자르면 마지막 4글자를 자를 수 있다.
3) 그리고 for문을 돌려서 len-4의 개수만큼 #을 붙여주고
거기에 아까 잘라둔 piece를 합체해서 return해주면 원하는 답을 얻을 수 있다!
반응형'Algorithm' 카테고리의 다른 글
[알고리즘/자바스크립트] 삼각형 판별문제 (Is this a triangle?) (0) 2019.02.18 [알고리즘/자바스크립트] 완벽한 제곱근 구하기 (Find the next perfect square!) (0) 2019.02.18 [알고리즘/자바스크립트] 특정문자 공백으로 치환해서 return하기 (Dubstep) (252) 2019.02.17 [알고리즘/자바스크립트] 최소값 구하기 / 단어 중 가장 길이가 짧은 단어의 length를 구하기 (Shortest Word) (252) 2019.02.17 [알고리즘/자바스크립트] 약수 구하는 알고리즘 (Find the divisors!) (127) 2019.02.17 COMMENT