코딩테스트

프로그래머스 | 핸드폰 번호 가리기

다시은 2023. 12. 27. 09:43

 

옛날에 컴활 딸 때 이런 비슷한 걸 했던 것 같은데 🤔

어떤 메소드를 쓰는 걸까...

문자열 일부를 제외한 나머지를 일정한 값으로 바꾼다?

 

문자열을 map 메소드로 문자열배열로 바꾸고

for 반복문으로 인덱스가 문자열사이즈의 5보다 작거나 같으면 * 으로 값을 할당하고 크면 그대로 할당했다.

 

class Solution {
    fun solution(phone_number: String): String {
        var answer = ""
        var p = phone_number.map{it.toString()}
        for((index, value) in p.withIndex()) {
            if(index <= p.size-5) {
                answer += "*"
            } else {
                answer += value
            }
        }
        return answer
    }
}

 

 

 

 

다른 사람 풀이

class Solution {
    fun solution(phone_number: String): String {
        return "${"".padStart(phone_number.length - 4, '*')}${phone_number.takeLast(4)}"
    }
}

 

padStart(데이터길이, "문자") / padEnd()

자바스크립트로 시계만들 때 썼었던 것 같다.

데이터의 길이를 지정하고 부족한 만큼 설정한 문자로 채운다.

뒷 네자리를 제외한 앞의 번호를 다 바꾸어야 하니 번호의 길이에서 4를 뺀 만큼을 "*"로 채우고

그 뒤는 takeLast() 메소드로 뒷 네자리를 가져온다.

 

take(n) / takeLast(n)

처음 n개 / 뒤에서 n개 를 반환한다.