crystal_dev
Crystal 개발 일지
crystal_dev
전체 방문자
오늘
어제
  • 분류 전체보기 (58)
    • Web (0)
    • Frontend (32)
      • React (0)
      • Javascript (17)
      • HTML & CSS (14)
      • DOM API (0)
    • 사이드프로젝트 (1)
      • Flask (1)
    • CS (0)
      • Network (0)
    • 형상관리 & 개발도구 (2)
      • git (1)
      • VSCode (1)
    • 알고리즘 (19)
      • 백준 알고리즘 (1)
      • 프로그래머스 (17)
      • 기타 (1)
    • Error (2)
      • javscript (1)
      • python (1)
    • blog (2)
      • daily (1)
      • 회고 (0)
      • it참고 (0)
      • 항해99 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • CSS
  • userfont
  • css위치
  • js 기본
  • match()
  • let
  • css정렬
  • js
  • Javascript
  • 자바스크립트
  • 프론트엔드
  • js기본
  • Programmers
  • frontend
  • 느슨한타입
  • 알고리즘
  • 프로그래머스
  • javascript error
  • Algorithm
  • 풀이

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
crystal_dev

Crystal 개발 일지

[lv.1] 핸드폰 번호 가리기
알고리즘/프로그래머스

[lv.1] 핸드폰 번호 가리기

2022. 5. 17. 10:53
728x90
반응형

문제 설명

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

 

제한 조건
  • phone_number는 길이 4 이상, 20이하인 문자열입니다.

 

입출력 예
phone_number return
"01033334444" "*******4444"
"027778888" "*****8888"

 

내 풀이 1

// 내 풀이 1
// for문과 substr을 이용한 풀이
function solution(phone_number){
    let front = '';
    for(let i = 0; i<phone_number.length-4; i++){
        front += '*';
    }
    let back = phone_number.substr(phone_number.length-4,4);
    return front+back;
}

 

🔥 풀이

length - n             length-5 length-4 length-3 length-2 length-1
인덱스1 0 1 2 3 4 5 6 7 8 9 10
phone_number 0 1 0 1 2 3 4 5 6 7 8
인덱스2 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

 👉 휴대폰 맨 뒤 4자리를 제외한 숫자들은 *로 교체되어야 한다. 

*를 '휴대폰 번호의 길이 - 5'(phone_number.length - 5) 까지 for문으로 가리고, 맨 뒤에서부터 4자리는 substr로 잘랐다.  

 

내 풀이 2

// 내 풀이 2
// repeat와 substring을 이용한 풀이
function solution2(phone_number) {
    let front = '*'.repeat(phone_number.length-4);
    let back = phone_number.substring(phone_number.length-4,phone_number.length);
    return front+back;
}

👉 for문을 쓰지 않고, repeat로 *를 반복하고, substring으로 휴대폰 번호 뒷 4자리를 추출

 

내 풀이 3

// 내 풀이 3
// repeat와 slice(-4)를 이용한 풀이
// slice는 -1 부터 시작하면 맨 뒷자리부터 탐색해서 해당 문자열부터 맨 뒤 문자열까지 문자열을 반환하는 것이 가능하다.
function solution3(phone_number) {
    let front = '*'.repeat(phone_number.length-4);
    let back = phone_number.slice(-4);
    return front+back;
}

👉 slice()를 쓰면 맨 뒷자리 부터 탐색하여 문자열을 반환하는 것이 가능하다.

휴대폰 번호는 맨 뒤에서 4번째부터 맨 뒷자리까지 반환해야 하므로 slice(-4)로 문자열을 반환하였다. 

 

728x90
반응형
저작자표시 (새창열림)

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[lv.1] x만큼 간격이 있는 n개의 숫자  (0) 2022.05.17
[lv.1] 행렬의 덧셈  (0) 2022.05.17
[lv.1] 평균 구하기  (0) 2022.05.16
[lv.1] 음양 더하기  (0) 2022.05.16
[lv.1] 없는 숫자 더하기  (0) 2022.05.14
    '알고리즘/프로그래머스' 카테고리의 다른 글
    • [lv.1] x만큼 간격이 있는 n개의 숫자
    • [lv.1] 행렬의 덧셈
    • [lv.1] 평균 구하기
    • [lv.1] 음양 더하기
    crystal_dev
    crystal_dev
    어제보다 더 나은 오늘의 내가 되자 ✧ʕ̢̣̣̣̣̩̩̩̩·͡˔·ོɁ̡̣̣̣̣̩̩̩̩✧

    티스토리툴바