알고리즘

프로그래머스 Level 1 - 핸드폰 번호 가리기(Javascript)

또롱또 2022. 5. 13. 10:07
728x90

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

function solution(phone_number) {
    var answer = '';
    // 숫자를 뒤에서 4번째 index부터 두 그룹으로 잘라서 관리할 예정
    let frontNum;
    let behindNum;
    
    // 앞의 숫자에 들어오는 길이가 4일경우 앞의 숫자는 비워준다.
    if(phone_number.length === 4){
        frontNum = '';
    }
    else{
    	// 그렇지 않으면 .substr(-4)는 뒤에서부터 4번째에서 문자열을 자르고
        // 그 위치에서부터 split한다. 제일뒤에 [0] index는 split하고 앞의것을 가져온다
        frontNum = phone_number.split(phone_number.substr(-4))[0]
    }
    
    // 뒤에4번째부터 자른다.
    behindNum = phone_number.substr(-4)
    
    // 앞의숫자는 이제 앞의 숫자의 길이만큼 *을 반복해서 채워준다
    frontNum = '*'.repeat(frontNum.length)

	// 두 수를 더한다.
    return frontNum + behindNum;
}

 

내코드는 테스트케이스 13번을 통과하지 못했다. 

13번이 무엇인지 모르지만,, 결국  해결을 못했고

정답을 보았다. 정답에는 두종류가 있었는데, 하나는 정규표현식으로, 다른 하나는 아래처럼 심플하게 짠 구조였다.

정규표현식보다는 아직은 심플한 기본에 충실하고 싶어서 심플한거만 가져와서 이해했다.

아래 함수는 나의 알고리즘과 같지만 코드의 길이나 완성도에서 차이가 많이난다.

먼저 repeat으로 문자열의 길이만큼 채워주고, 그 뒤에는 자른 문자열을 붙힌다 이다.

 

function hide_numbers(s){
  var result = "*".repeat(s.length - 4) + s.slice(-4);
  //함수를 완성해주세요

  return result;
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log("결과 : " + hide_numbers('01033334444'));
728x90