핸드폰 번호 가리기
https://school.programmers.co.kr/learn/courses/30/lessons/12948
전화번호가 매개변수로 주어질 때, 전화번호 뒷 4자리를 제외한 나머지 숫자를 전부 * 로 변환하는 문제이다.
내가 생각한 방법은 이렇다.
- phone_number 를 char 배열로 담는다. ( string 은 불변이기 때문 )
- 반복문 for 를 사용한다.
- for(int i = 0; 0 < phone_number.Length - 4; i++)
- phone_number.Length 의 - 4 를 하면 인덱스 마지막 4자리는 포함 안되니까 그대로 * 로 변환
- 마지막으로 형변환을 활용해서 문자열로 변환 후 반환
public class Solution
{
public string solution(string phone_number)
{
char[] c = phone_number.ToCharArray();
for(int i = 0; i < c.Length - 4; i++)
{
c[i] = '*';
}
return new string(c);
}
}
여기서 일부분을 잘못 작성 했었다.
char[] c = new phone_number.ToCharArray();
ToCharArray() 가 이미 새 배열을 만들어서 반환하기 때문에 new 가 불필요하다.
Padding 을 활용한 전화번호 마스킹
다른 사람 풀이 중에 처음 보는 메서드가 있었다.
Padding 을 활용하면 더 간단하게 풀이가 가능하다.
public class Solution
{
public string solution(string phone_number)
{
return phone_number.Substring(phone_number.Length - 4).PadLeft(phone_number.Length, '*');
}
}
Padding 을 사용하지 않고도 가능하다.
public class Solution
{
public string solution(string phone_number)
{
return new string('*', phone_number.Length - 4) + phone_number.Substring(phone_number.Length - 4);
}
}
▲코드 풀이
- new string('*', phone_number.Length - 4)
앞부분을 * 로 채운다. - phone_number.Substring(phone_number.Length - 4)
뒤의 4 자리 가져오기 - 둘을 합치기
SubString
문자열의 일부를 잘라내는 메서드이다.
string str = "hello";
str.Substring(2) // → "llo" (2번 인덱스부터 끝까지)
str.Substring(1, 3) // → "ell" (1번 인덱스부터 3개)
- SubString( 시작 Index ) : 시작부터 끝까지
- SubString( 시작 Index, 길이 ) : 시작부터 길이만큼
패딩 ( Padding )
패딩은 문자열의 길이를 맞추기 위해 빈 공간을 특정 문자로 채우는 것을 말한다.
C# 에서는 대표적으로 두 가지 메서드가 있다.
PadLeft()
PadRight()
- PadLeft : 왼쪽에 문자를 채워서 문자열 길이를 맞추는 메서드이다.
- PadRight : 오른쪽에 문자를 채워서 문자열 길이를 맞추는 메서드이다.
문법
문자열.PadLeft(전체길이, 채울문자)
문자열.PadRight(전체길이, 채울문자)
"hello".PadLeft(10) // → " hello" (왼쪽에 공백 채우기)
"hello".PadRight(10) // → "hello " (오른쪽에 공백 채우기)
"hello".PadLeft(10, '*') // → "*****hello" (왼쪽에 * 채우기)
"hello".PadRight(10, '*') // → "hello*****" (오른쪽에 * 채우기)
채울 문자를 생략하면 기본적으로 공백으로 채워진다.
'📖TIL > ✅CodingTest' 카테고리의 다른 글
| 문자 리스트를 문자열로 변환 (0) | 2026.05.29 |
|---|---|
| 숨어있는 숫자의 덧셈 (0) | 2026.05.16 |
| 등차수열의 합 (0) | 2026.05.12 |
| 반복문 없이 반복된 문자열 만들기 (0) | 2026.05.10 |
| 문자열 변환 없이 각 자릿수 분리 (0) | 2026.05.09 |