https://school.programmers.co.kr/learn/courses/30/lessons/12948
문제
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
phone_number는 길이 4 이상, 20이하인 문자열입니다.
풀이1
class Solution {
fun solution(phone_number: String): String = phone_number.replace("""^[0-9]{${phone_number.length-4}}""".toRegex(),"*".repeat(phone_number.length -4))
}
- 이전에 풀었던 코드입니다. 해당 코드에서는 regax(정규식)를 이용하여 문제를 풀었습니다. regax를 이용한 정규식으로 풀경우 가독성이 좋다는 장점이있지만 해당작업은 시간이 많이 걸립니다.
결과1
풀이2
class Solution1 {
fun solution(phone_number: String): String {
var answer = StringBuilder()
for (i in phone_number.indices){
if (phone_number.length - i > 4){
answer.append('*')
}else{
answer.append(phone_number[i])
}
}
return answer.toString()
}
}
class Solution2 {
fun solution(phone_number: String): String {
return buildString {
repeat(phone_number.length - 4) { append('*') }
for (i in (if(phone_number.length - 4 > 0) phone_number.length - 4 else 0) until phone_number.length ) {
append(phone_number[i])
}
}
}
}
- 정규식을 쓸경우 시간이 길어지는 단점을 보안하기 위해서 해당코드를 작성하였습니다. 위코드는 정규식을 이미 만족하고 있다는것을 확정하고 해당 작업을 수행하기 때문에 위의 작업보다는 시간이 적개 필요합니다. 이작업에서는 Solution1처럼 조건을 계속해서 물어볼수있지만 해당작업은 매번 검사를 해줘야하기때문에 반복문을 2개로 나누어 Solution2처럼 작성한다면 조금이지만 더욱 최적화된 코드를 작성할수 있을것입니다.
결과2
'코틀린 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - 문자열 다루기 기본 (Kotlin) (0) | 2023.08.03 |
---|---|
[프로그래머스] - 두 정수 사이의 합 (Kotlin) (0) | 2023.08.03 |
[프로그래머스] - [1차] 비밀지도 (Kotlin && JAVA) (0) | 2023.08.02 |
[프로그래머스] - 문자열 내 마음대로 정렬하기 (Kotlin) (0) | 2023.08.02 |
[프로그래머스] - 평행 (Kotlin) (0) | 2023.08.01 |