적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Algorithm/Programmers

[Swift 문자열] Programmers 핸드폰 번호 가리기

hongssup_ 2022. 1. 7. 01:34
반응형

Level 1 연습문제

핸드폰 번호 가리기

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

 

모범답안 😊

func solution(_ phone_number:String) -> String {
    return String(repeating:"*", count:phone_number.count-4)+phone_number.suffix(4)
}

오우.. 이런 방법이..!

swift에서도 String을 저렇게 쓸 수 있구나.. 

suffix(_:) 뒤에서 부터 몇 글자만큼

func suffix(_ maxLenth: Int) -> Substring

 

 

내 답안 😣

func solution(_ phone_number:String) -> String {
    var arr = Array(phone_number)
    var arrr = [Character](repeating: "*", count: (arr.count-4))
    arr.removeFirst(arr.count-4)
    arrr += arr
    return String(arrr)
}

 

실패한 코드 🤢

처음에 문자열을 배열로 바꾼 후 뒤에서 다섯번째 자리까지 *로 치환해줬는데 테스트 9에서 오류가 났다. 왜????

제한 조건을 잘 보자..! 핸드폰 번호라고 해서 방심했는데 문자열 길이는 4 이상부터였던 것이다..

그래서 아마도 길이가 4인 테스트 케이스에서 반복문의 조건이 0 <= -1 로 되어버려 실패를 한 것 같다.

 

 

728x90
반응형