[Swift] 프로그래머스 핸드폰 번호 가리기
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
- phone_number는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number return “01033334444” “***4444” “027778888” “*****8888”
풀이
주어진 문자열의 마지막 4자리를 제외한 나머지 부분을 “*“로 변환하여 출력하는 문제로 문자열을 배열 형태로 변환하여 풀어봤습니다.
1
2
3
4
5
6
7
8
9
10
11
func solution(_ phone_number:String) -> String {
var result = Array(phone_number)
for i in 0..<result.count {
if i < result.count - 4 {
result[i] = "*"
}
}
return String(result)
}
- 주어진 문자열을 배열형태로 변환합니다.
- 배열을 순회하면서 마지막 4개를 제외한 나머지 요소를 “*“로 변경합니다.
- 변환된 배열을 문자열 형태로 반환합니다.
실행 결과
다른 풀이
다른 풀이로 배열로 변환하지 않고 문자열을 이용해 풀어봤습니다.
1
2
3
4
5
6
7
8
9
10
11
func solution(_ phone_number:String) -> String {
var result = ""
for _ in 0..<phone_number.count - 4 {
result += "*"
}
result += phone_number[phone_number.index(phone_number.endIndex, offsetBy: -4)..<phone_number.endIndex]
return result
}
- 정답을 반환할 문자열 변수를 선언 및 초기화합니다.
- 주어진 문자열의 길이 -4 만큼 반복문을 실행합니다.
- 반복문을 실행하면서 “*“를 result 문자열에 더합니다.
- 주어진 문자열 뒤에 4자리 숫자를 result 문자열에 더합니다.
실행 결과
배열로 변환하지 않고 풀었을 때 더 빠른 결과가 나올 거라 예상했는데 반대로 나왔네요…
푸는 방법이 잘못되었을 수도… 문자열은 인덱스로 다뤄야 해서 다른 자료형보다 어려운 거 같습니다.
댓글남기기