본문 바로가기
코딩 테스트/프로그래머스 (Lv1)

[C#][프로그래머스] 핸드폰 번호 가리기

by 스누ㅍl 2024. 8. 16.

프로그래머스 > 코딩테스트 연습 > 연습문제 > 핸드폰 번호 가리기

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# 문법] Enumerable 클래스

최근 수정: 2024.08.14Enumerable 클래스 내용 중 새로 알게되거나 사용했던 메서드들 기록하는 곳입니다. Enumerable 클래스Enumerable 클래스는 LINQ의 일부로 IEnumerable 인터페이스를 구현하는 컬렉션 클래

twd0622.tistory.com

 

[C# 문법] string 메서드 모음

최근 수정: 2024.08.12string 메서드 내용 중 새로 알게되거나 사용했던 메서드들 기록하는 곳입니다. 주요 메서드Substring([시작위치], [문자열길이]): string의 시작위치부터 문자열 길이만큼 추출해준

twd0622.tistory.com