핸드폰 번호 가리기

은유로그·2022년 6월 29일
0

👩‍💻 algorithm

목록 보기
11/11

문제

function solution(phone_number) {
    let answer = "";
    
    // 첫번째 방법

    for(let i = 0; i < phone_number.length - 4; i++){
    // phone_number의 4자리를 제외한 길이만큼 반복하면서
        answer += '*'
    // answer에 "*"를 추가한다
    }
    answer += phone_number.slice(-4);
    // phone_number의 마지막 4자리를 잘라서 answer에 추가한다
  
  
  // slice()는 얕은 복사해주는 함수!
  // arr.slice([begin[, end]]) 으로 begin, end 둘 다 숫자 타입만 인자를 받을 수 있음
  // 인자로 받는 숫자는 둘 다 인덱스 번호를 뜻하고
  // 예를 들어 const test = arr.slice(0, 1)은 arr 배열의 0번째부터 1번째까지 짤라 복사하여 test에 할당, 즉 test === [arr[0], arr[1]]
  // 꼭 두 개의 인자를 넣을 필요 없음! 내가 한 것 처럼 한 개의 인자만 넣어도 됨!
  // 한 개의 인자를 넣었을 경우 arr.slice(1)은 arr 배열의 1번째부터 끝까지 짤라 복사 한다는 뜻
  // 양수 뿐만 아니라 음수도 가능. 음수는 양수와 달르게 처음부터가(0번째) 아닌 뒤에서부터 짤라 복사
  // 즉, phone_number.slice(-4) 는 입력받은 phone_number의 뒤에서부터 4자리를 짜른다는 뜻
  // [slice() 공식 문서](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)
  // 파이썬과 자바에 slice() 메소드가 존재하는지는 모르겠음 ㅠㅠ

    return answer
}
function solution(phone_number) {
    let answer = "";
  
    // 두번째 방법
    const hidden = phone_number.slice(0, -4).length;
    // 숨길 번호 길이를 알아낸다
    const show = phone_number.slice(-4)
    // 보여줄 번호를 잘라낸다

    answer = new Array(hidden + 1).join("*") + show
    // 배열로 만든 후 문자열로 치환하는 join함수를 써서 "*"로 채우고
    // 보여줄 번호를 붙여서 리턴한다
  
  
  // new Array()는 배열을 만든다는 뜻! (구체적으로 말하자면 배열 클래스 생성)
  // new Array(숫자)를 쓰면 숫자만큼의 길이를 가진 빈 배열 생성됨, 요소는 비어있음 (emyty data)
  // join() 메소드는 배열을 문자열로 만들어주는 메소드! join() 메소드의 인자값으로 넣은 문자("*")만큼 문자열로 생성
  // 앞서 만들어둔 phone_number의 마지막 4자리 (=== show)와 합쳐서 출력

    return answer
}
profile
๑•‿•๑

0개의 댓글