[프로그래머스] 핸드폰 번호 가리기

neoneoneo·2024년 2월 27일
0

kotlin

목록 보기
9/49
post-custom-banner

문제

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

나의 풀이

class Solution {
    fun solution(phone_number: String): String {
        var answer = ""
        for (i in 0..phone_number.length-1) {
            if (i < phone_number.length-4) {
                answer += "*"
            } else answer += phone_number[i]
        }
        return answer
    }
}

고수의 풀이

class Solution {
    fun solution(phone_number: String): String {
        return "${"".padStart(phone_number.length - 4, '*')}${phone_number.takeLast(4)}"
    }
}

배운점

  • .padStart 함수를 쓰면 문자열을 지정된 길이로 패딩할 수 있다(패딩이란 데이터 앞이나 뒤에 추가적인 문자, 숫자를 채워서 특정 길이를 맞추는 것.)
    • .padStart(5, "")는 데이터의 길이가 5가 될 때까지 원본 데이터(문자열) 앞에 문자 ""를 추가하는 것을 의미한다.
    • 고수는 "".padStart(마지막 4자리를 뺀 문자열 길이, "") 처리하여 앞의 문자열은 로 바꿨다.
      • 맨 앞에 ""를 둔 것은 padStart 함수에 대한 호출을 수행할 문자열의 시작을 의미한다. 즉, 빈 문자열에 padStart 함수를 적용하여 새로운 문자열을 생성하는 역할이다.
    • 바꾼 문자열 *와 뒷 자리 4개는 문자열 템플릿 문법을 사용하여 구성했는데, $를 사용했다.
      • $ {...} : 문자열 내에서 변수나 식을 사용하여 문자열을 동적으로 구성할 수 있게 해준다. "a는 $a이다" 이런식으로 쓰는 줄만 알았지.. 이렇게 응용하는 건 처음봤다.
    • phone_number.takeLast(4)는 원래 문자열의 마지막 4자리 수를 가져오는 데에 사용했다.

[TIL-240227]

post-custom-banner

0개의 댓글