Ming's develop story

알고리즘 - 핸드폰 번호 가리기 (21.11.11) 본문

스파르타코딩클럽 - 항해99/항해99 Chapter2 - 알고리즘 기초

알고리즘 - 핸드폰 번호 가리기 (21.11.11)

Ming 2021. 11. 11. 01:48
  • 핸드폰 번호 가리기

문제 설명

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

제한 조건

  • s는 길이 4 이상, 20이하인 문자열입니다.

입출력 예

  phone_number                                                              return

"01033334444" "*******4444"
"027778888" "*****8888"

 

 

내 풀이

 

1. 값을 반환 받을 answer 변수를 지정해주고 가독성을 위해 변수x에 slice() 함수를 사용해 전화번호 뒤에서4자리 전까지의 길이를 지정해줬다

 

2. 반복문을 돌리며 그 길이만큼  * 을 추가해 준다

 

3. 마지막으로 substr() 함수를 사용해 뒤에서 네자리 숫자를 반환해 값에 추가해준다.

 

 

 

slice() 함수는 파라미터로 시작 인덱스와 종료 인덱스를 받아 값을 반환하는 함수이며, 두번째 인자인 종료 인덱스는 필수 값이 아니다.

ex) p_n.slice(0, -4)를 해석하면 0번째 인덱스부터 뒤에서 4번째 전 까지의 인덱스를 반환해준다.    p_n = '123456789' 인 경우 12345 까지 반환해준다.

 

substr() 함수는 파라미터로 시작 인덱스와 길이를 받아 시작문자부터 길이까지 문자를 반환하는 함수이며, 두번째 인자인 길이는 필수 값이 아니다.

ex)p_n.substr(-4)를 해석하면 뒤에서 4번째 인덱스부터 끝까지 문자를 반환해준다.    p_n = '123456789' 인 경우 6789 를 반환해준다.

 

 

다른 사람의 풀이

 

정규식을 활용한 풀이도 있었으나 기본에 충실한 이 코드식이 너무 매력적으로 다가와 가져와 보았다.

 

repeat 메서드를 활용해 번호의 뒤 4자리 전까지 숫자의 갯수만큼  * 을 반복해서 넣어주고 slice를 통해 뒤에서 4번째 번호부터 반환해 추가해 주었다

 

repeat() – 문자열을 반복한 값을 반환하는 메서드입니다. 

'x'.repeat( y ) 는 x를 y번 만큼 추가 하라고 해석하면 된다

Comments