[프로그래머스]/ㄴ코테연습 : Level 1
[프로그래머스] 핸드폰 번호 가리기 (Swift)
__hyeon2__
2022. 6. 26. 03:44
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/12948
코딩테스트 연습 - 핸드폰 번호 가리기
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자
programmers.co.kr
<나의 풀이>
func solution(_ phone_number:String) -> String {
// 제한 조건
if phone_number.count < 4 || phone_number.count > 20 {
return ""
}
// 문자열의 맨 뒤에서 4번째 인덱스를 가져옴
// (index 메서드를 사용하면 문자열도 배열처럼 사용할 수 있다!)
let index = phone_number.index(phone_number.endIndex, offsetBy: -4)
// 가져온 전화번호의 뒷 4자리를 제외한 숫자 개수만큼 *로 처리 하고, 뒷 4자리를 붙여줌
var result = String(repeating: "*" , count: phone_number.count - 4) + phone_number[index...]
return result
}
<다른 사람의 풀이>
func solution(_ phone_number:String) -> String {
return String("\(String(repeating: "*", count: phone_number.count - 4))\(phone_number.suffix(4))")
}
- 덧셈연산자(+)가 아닌, 문자열보간법으로 문자들을 이어준 점이 신기했다!
func solution(_ phone_number:String) -> String {
guard phone_number.count > 4 else { return phone_number }
return String(phone_number.enumerated().map{($0.offset<phone_number.count-4 ? Character("*") : $0.element)})
}
// -----------------------
// offset이 무엇인지 찍어보자!
// -----------------------
print(phone_number.enumerated().map{$0.offset}) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- offset을 사용하면 해당 인자의 인덱스 배열을 알 수 있다.
- 반대로 element를 사용하면 해당 인자 값을 가져올 수 있다.
728x90
반응형