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

김유원·2024년 1월 17일
0

📝24.01.17

🔗 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12948

문제 설명

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

[C#] 내가 작성한 풀이

하드 코딩에 가까운 풀이를 구상했다...

public class Solution {
    public string solution(string phone_number) {
        string answer = "";
        string str = phone_number.Substring(phone_number.Length - 4);
        for(int i = 0; i < phone_number.Length-4; i++) {
            answer += "*";
        }
        
        answer += str;
        return answer;
    }
}

[C#] 남이 작성한 풀이

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;
    }
}

[C++] 내가 작성한 풀이

오답

길이가 4인 경우가 제외되었다.

#include <string>
#include <vector>

using namespace std;

string solution(string phone_number) {
    string answer = "";
    
    for(int i = 0; i < phone_number.length() - 4; i++) {
        answer = phone_number.replace(i, 1, "*");
    }
    return answer;
}

정답

string answer = phone_number;로 수정하여 해결.

#include <string>
#include <vector>

using namespace std;

string solution(string phone_number) {
    string answer = phone_number;

    for(int i = 0; i < phone_number.length() - 4; i++) {
        answer = phone_number.replace(i, 1, "*");
    }
    return answer;
}

[C++] 남이 작성한 풀이

이렇게 일차원적인 풀이가 더 나을 수도 있다.

#include <string>
#include <vector>

using namespace std;

string solution(string phone_number) {
    string answer = "";

    for (int i = 0; i < phone_number.size() - 4; i++ )
    {
        phone_number[i] = '*';
    }

    answer = phone_number;

    return answer;
}
profile
개발 공부 블로그

0개의 댓글

관련 채용 정보