문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한사항
- phone_number는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number | return |
---|
“01033334444” | ”*******4444” |
“027778888” | ”*****8888” |
풀이
1
2
3
4
5
6
7
8
9
10
11
| func solution(phone_number string) string {
var sb strings.Builder
for i := 0; i < len(phone_number)-4; i++ {
sb.WriteString("*")
}
sb.WriteString(phone_number[len(phone_number)-4:])
return sb.String()
}
|
strings.Builder
는 문자열을 효율적으로 연결할 수 있도록 설계sb
를 선언i
를 0 부터 len(phone_number)-4
까지 순회sb.WriteString
을 이용하여 "*"
를 sb
의 버퍼에 추가
- 순회가 끝나면,
phone_number
슬라이스의 마지막 문자 4개를 슬라이싱하여 sb
의 버퍼에 추가 sb
버퍼에 쌓인 문자열을 반환
테스트코드
유닛 테스트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| const TESTCOUNT = 2
var (
phone_number = [TESTCOUNT]string{
"01033334444",
"027778888",
}
result = [TESTCOUNT]string{
"*******4444",
"*****8888",
}
)
func TestSolution(t *testing.T) {
for i := 0; i < TESTCOUNT; i++ {
fmt.Printf("phone_number : %v\n", phone_number[i])
fmt.Printf("result : %v\n", result[i])
fmt.Printf("solution result : %v\n", solution(phone_number[i]))
}
}
|
1
2
3
4
5
6
7
8
9
10
11
| $ go test -v
=== RUN TestSolution
phone_number : 01033334444
result : *******4444
solution result : *******4444
phone_number : 027778888
result : *****8888
solution result : *****8888
--- PASS: TestSolution (0.01s)
PASS
ok golang-coding-test/Lv1/mask_phonenumber 0.326s
|