본문 바로가기
algorithm

[프로그래머스]핸드폰 번호 가리기 - java, python

by skysline 2023. 3. 3.
반응형

`핸드폰 번호 가리기`

문제 설명

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

입출력 예


java code

class Solution {
    public String solution(String phone_number) {
        String answer = "";
        String last = phone_number.substring(phone_number.length()-4);
        for (int i = 0; i < phone_number.length()-4; i++) {
			answer += "*";
		}
        return answer+last;
    }
}
다른풀이 
class Solution {
    public String solution(String phone_number) {
        // 문자열의 길이에서 뒤에서 4자리를 뺀 길이만큼 *로 채운 문자열을 만듭니다.
        String stars = "*".repeat(phone_number.length() - 4);
        // 전화번호의 뒤 4자리를 가져옵니다.
        String lastFourDigits = phone_number.substring(phone_number.length() - 4);
        // *로 가린 문자열과 뒤 4자리를 합쳐서 반환합니다.
        return stars + lastFourDigits;
    }
}

문자열을 가리는 문제는 주어진 문자열의 일부를 '*'으로 가려서 새로운 문자열을 만드는 문제입니다.

예를 들어, 주어진 문자열이 "01012345678"이라면, 뒤 4자리인 "5678"을 제외한 나머지 숫자 부분을 모두 '*'로 가려서 "*******5678"과 같은 새로운 문자열을 만들어야 합니다.

이를 해결하기 위해서는 우선 문자열의 길이를 구해야 합니다. 이후 문자열의 길이에서 뒤에서 4자리를 뺀 길이만큼 '*'로 이루어진 문자열을 만듭니다.

그 다음으로는 원래 문자열에서 뒤 4자리를 추출해야 합니다. 이를 위해 substring 메소드를 사용할 수 있습니다. substring 메소드는 문자열의 일부분을 추출할 때 사용하는 메소드로, 인덱스를 지정하여 해당 인덱스부터 문자열을 추출할 수 있습니다. 따라서 원래 문자열의 길이에서 4를 뺀 인덱스부터 끝까지 추출하면 뒤 4자리를 추출할 수 있습니다.

마지막으로는 '*'로 이루어진 문자열과 뒤 4자리를 합쳐서 반환하면 됩니다. 이때 문자열 연결 연산자인 '+'를 사용하여 문자열을 연결하면 됩니다.

위와 같은 방식으로 문자열을 가릴 수 있습니다.

python code

def solution(phone_number):
    
     return  '*'*(len(phone_number)-4) +phone_number[-4:]

입력으로 주어진 전화번호의 길이에서 4를 뺀 만큼 '*'로 이루어진 문자열을 만듭니다. 이를 위해

'*' 문자열을 곱셈 연산자를 사용하여 전화번호 길이에서 4를 뺀 수만큼 반복한 후,

이를 반환할 문자열의 앞부분에 대입합니다.

그리고, 전화번호의 뒤 4자리를 추출합니다. 이를 위해 문자열 인덱스를 사용하여 전화번호의 마지막에서부터

4번째 인덱스까지 추출합니다. 이 추출된 문자열은 반환할 문자열의 뒷부분에 대입합니다.

마지막으로, 문자열 연결 연산자 '+'를 사용하여 앞부분에 '*'로 이루어진 문자열과 뒷부분에 추출한 전화번호의 뒤 4자리를 합쳐서 새로운 문자열을 만들어 반환합니다.

예를 들어, "01012345678"이라는 전화번호가 주어진다면, 먼저 전화번호의 길이에서 4를 뺀 결과값은 7입니다. 따라서 '' 문자열을 7번 반복한 결과인 "******"을 반환할 문자열의 앞부분에 대입합니다. 그리고 문자열 인덱스를 사용하여 전화번호의 마지막에서부터 4번째 인덱스까지 추출한 결과값인 "5678"을 반환할 문자열의 뒷부분에 대입합니다. 이 두 문자열을 '+' 문자열 연결 연산자를 사용하여 합치면, "*******5678"이라는 결과값을 반환합니다.

반응형

댓글