오늘 문제는 for문을 사용하지 않고 짧게 해결할 방법을 생각해보려 했으나 도저히 생각나지 않았 다... 따라서 phone_number를 SubString을 통해 뒤에 4자리만 남겨놓고 나머지는 *
를 Insert 하여 문제를 해결했다.
public string solution(string phone_number)
{
string answer = "";
int maskingSize = phone_number.Length - 4;
if (maskingSize > 0)
{
answer = phone_number.Substring(maskingSize);
for (int i = 0; i < maskingSize; i++) answer = answer.Insert(i, "*");
return answer;
}
else return phone_number;
}
하지만 문제를 해결하고 다른 사람의 코드를 확인해보니 더 좋은 방법이 있어서 가져왔다!
PadLeft()라는 함수는 알고는 있었지만 이런 식으로 사용 가능한 줄 몰랐다. 나중에 특정 길이만큼 마스킹을 해야하는 경우가 또 생긴다면 이것을 잊지 않고 사용했으면 좋겠어서 기록을 남긴다.
public class Solution {
public string solution(string phone_number) {
string answer = phone_number.Substring(phone_number.Length - 4);
answer = answer.PadLeft(phone_number.Length, '*');
return answer;
}
}
나와 마찬가지로 SubString을 통해 뒤에 4자리만 남기고 문자열을 자른 것은 동일하나, PadLeft를 통해 answer가 phone_number의 Length가 되도록 *
를 채워준 것이다.