문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *
으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
입출력 예
phone_number | return |
---|---|
"01033334444" | "***4444" |
"027778888" | "*8888" |
풀이 과정
phone_number의 뒷자리 4개를 구하고,
4개 제외한 글자의 수를 세서 *로 변환하도록 하자! 생각하고 시작했다.
우선 뒷자리 4개를 구하기 위한 방법을 찾아보다가,
’suffix’ 메서드를 알게 되었다.
suffix
문자열의 끝에서부터 지정된 길이의 부분 문자열을 추출할 수 있는 메서드
그리고 뒷자리 4개를 제외한 수를 카운팅 해서 *로 변환하기 위한 방법을 찾다가
알게된 ‘repeating: , count: ‘ 형식!
repeating: , count:
문자열 초기화 방법. 특정 문자를 지정된 횟수만큼 반복하여 문자열을 생성할 수 있다.
사용한 요소들에 대한 간단한 설명이 끝났으니 적용 시켜보자 :>
suffix(4)
를 사용하여 전화번호의 뒷자리 4개를 추출한다.- 전체 전화번호 문자열의 길이를
count
메서드를 통해 구한 후, 여기서 4를 빼줍니다. 이를 통해 필요한 *의 개수를 구한다.repeating
메서드를 사용하여 필요한 *의 개수만큼 **** 문자를 반복하여 생성한다.- 생성된 *와 전화번호의 뒷자리 4개를 합쳐서 반환한다.
Solution
func solution(_ phone_number:String) -> String {
let end = phone_number.suffix(4)
let change = String(repeating: "*", count: phone_number.count - 4)
return change + end
}
이렇게 각각 상수에 담아준 후 반환할 때 합쳐줬다!
상수에 담지 않고 바로 반환하면 이렇게 한 줄로 줄일 수도 있다.
func solution(_ phone_number:String) -> String {
return String(repeating: "*", count: phone_number.count - 4) + phone_number.suffix(4)
}
나는 상수에 담아 정리한 게 깔끔해 보이고 이해하기 더 좋은 것 같다!..!(지극히 주관적)
오 저도 이 문제 풀 때 딱 suffix와 prefix를 처음 만났습니다!! 반갑네요 ㅎㅎ 아 물론 아는 건 없습니다 ㅎ 오늘 하루도 고생하셨어요!! 내일도 파이팅입니다 ㅎㅎㅎ