(알고리즘) 핸드폰 번호 가리기
2024. 4. 28. 18:05ㆍTIL
신나는 주말!
주말에는 간단한 알고리즘 문제를 풀어보자!
🔥알고리즘 문제
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
- phone_number는 길이 4 이상, 20이하인 문자열입니다.
phone_number | return |
"01033334444" | "*******4444" |
"027778888" | "*****8888" |
내가 작성한 코드
class Solution {
fun solution(phone_number: String): String {
var phone_number_length=phone_number.length
var answer = "*".repeat(phone_number_length-4) +phone_number.substring(phone_number_length-4,phone_number.length )
return answer
}
}
내가 작성한 코드 해석
1. 뒤에 4자리를 제외하고 *표시를 해야하기 때문에 phone_number.length(전체길이) 에서 4를 뺀 만큼의 수만큼 *를 반복하기 위해 .repeat()함수를 사용
2. 마지막 4자리는 *표시 없이 그대로 출력하면 되기때문에 substring()함수 사용
다른사람은 어떻게 했을까?
class Solution {
fun solution(phone_number: String): String {
return "${"".padStart(phone_number.length - 4, '*')}${phone_number.takeLast(4)}"
}
} // 진*훈 , 박*근 , 정*희 님의 코드 입니다
다른사람이 작성한 코드 해석
1. return값으로 ""(큰 따옴표)를 반환함
return "${"".padStart(phone_number.length - 4, '*')}${phone_number.takeLast(4)}"
2. ""안에 ${"".padStart(phone_number.length - 4, '*')}${phone_number.takeLast(4)}가 있는 형태
return "${"".padStart(phone_number.length - 4, '*')} ${phone_number.takeLast(4)}"
3. ${}를 사용함으로서 문자열 안에 변수나 식의 값을 넣을수 있음. 즉 빈 문자열 ""에 .padStart(phone_number.length - 4, '*')를 적용시킨 값이 그 안에 들어가 있음
return "${"".padStart(phone_number.length - 4, '*')}${phone_number.takeLast(4)}"
4. padStart()함수는 현재 문자열의 앞 부분에 지정된 길이만큼 다른 문자를 채워 넣어주는 역할을 함.
그러므로 여기서는 "*" 라는 문자를 phone_number.length-4(전체길이에서 4개만 제외한) 만큼 대체함
return "${"".padStart(phone_number.length - 4, '*')}${phone_number.takeLast(4)}"
5. takeLast() 함수는 리스트나 문자열에서 뒤에서부터 지정된 개수만큼의 요소나 문자열을 가져오는 함수.
여기서는 phone_number.takeLast(4)를 사용하여 맨뒤에서부터 4개만큼의 문자열을 가져오게 됨
return "${"".padStart(phone_number.length - 4, '*')}${phone_number.takeLast(4)}"
6. return으로 문자열 반환
return "${"".padStart(phone_number.length - 4, '*')}${phone_number.takeLast(4)}"
이런 방법이.....
더 개선해야할 Point
문자열 사이에 "${}" 를 사용하는것은 println()을 사용할때만 활용했었는데 이렇게도 활용할수 있다는 점을 새롭게 알게 되었다. 똑같은 문제를 정말 다양한 방법으로 풀수 있다는것이 매우 놀랍다!!
알고리즘 Github : https://github.com/kotlin2024/algorithm/commit/c28ef90daeec1e0c260cb427d6cfdb8eae7868a1
'TIL' 카테고리의 다른 글
고차함수와 람다식 (0) | 2024.04.30 |
---|---|
Enum class (0) | 2024.04.29 |
(알고리즘) 나누어 떨어지는 숫자 배열 (0) | 2024.04.27 |
여러작업을 한번에 수행하자 (0) | 2024.04.26 |
Test Code 작성을 생활화 합시다 (0) | 2024.04.25 |