프로그래머스 > 코딩테스트 연습 > 연습문제 > 핸드폰 번호 가리기
https://school.programmers.co.kr/learn/courses/30/lessons/12948
📒 문제
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한사항
- phone_number는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number | return |
"01033334444" | "*******4444" |
"027778888" | "*****8888" |
💻 소스코드
using System.Linq;
public class Solution {
public string solution(string phone_number) {
return new string(phone_number.Select((s, i) => i < phone_number.Length-4 ? '*' : s).ToArray());
}
}
다른 풀이
public class Solution {
public string solution(string phone_number) {
return phone_number.Substring(phone_number.Length-4).PadLeft(phone_number.Length, '*');
}
}
※ 참고 사이트
padLeft : https://vmpo.tistory.com/10
📝 풀이
첫번째 풀이는 phone_number를 select로 시퀀스로 만드는데 phone_number의 길이의 뒤에서 4자리가 아니면 '*'으로 바꿔주고 charArray로 만든 다음 string 으로 바꿔주었다.
최근 enumerable 메서드로 대부분 문제를 해결하려고 하는데 좋지 못한 습관인거 같아서 다른 방식으로도 문제해결을 찾다가 나온 풀이이다.
phone_number에서 마지막 4자리의 숫자만 Substring으로 뽑아내서
PadLeft메서드를 사용해서 phone_number의 길이로 만들고 공백은 '*'로 채웠다.
PadLeft는 string의 총길이를 변경해주고 공백엔 원하는 문자로 채워주는 메서드이다.
관련 포스팅
'코딩 테스트 (C#) > 프로그래머스 (Lv1)' 카테고리의 다른 글
[C#][프로그래머스] 카드 뭉치 (0) | 2024.08.22 |
---|---|
[C#][프로그래머스] 문자열 내 마음대로 정렬하기 (0) | 2024.08.21 |
[C#][프로그래머스] 3진법 뒤집기 (0) | 2024.08.20 |
[C#][프로그래머스] 최대공약수와 최소공배수 (0) | 2024.08.19 |
[C#][프로그래머스] 정수 제곱근 판별 (0) | 2024.08.14 |