문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자들 전부 *로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한사항
- phone_number는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number | return | ||
"01033334444" | "*******4444" | ||
"027778888" | "*****8888" |
문제 풀이
풀이 언어 : C++
#include <string>
#include <vector>
using namespace std;
string solution(string phone_number) {
string answer = "";
string replace_star="";
// phone_number의 길이 -4 만큼의 별 만들기
for(int i=0; i<phone_number.size()-4; i++)
{
replace_star+="*";
}
// phone_number 숫자 *로 대체하기
answer=phone_number.replace(0, phone_number.size()-4, replace_star);
return answer;
}
문제를 보자마자 string이 제공하는 함수들부터 찾아봤다. 그러다 replace라는 함수를 발견하였고 적극 활용해보도록 했다.
먼저 *부터 만들어주기로 한다. phone_number에서 뒤에 4자리를 제외한 나머지를 *로 바꿔야 하기 때문에 *문자열의 길이는 phone_number.size()-4이다. 반복문을 이용해서 *로 알맞은 길이의 문자열을 만들어주고 이를 replace_star이라는 문자열 변수를 만들어 저장하였다.
다음으로 replace 함수를 이용하여 앞 문자열을 *로 대체해주었다. 0번째 인덱스부터 phone_number.size()-4 개의 문자열을 만들어두었던 replace_star로 바꾸어 준다.
참고사항
s.replace(n, k, str) 함수는 n번째 인덱스부터 k개만큼 str문자열로 바꾸어주는 함수이다. 이때 str이 k개 만큼 생기는게 아니라 str은 한번만 들어간다. phone_number.replace(0, 7, "*") ; 이렇게 하면 결과값이 "*4444"이 나온다는 뜻이다.
string s = "1234";
s.replace(1, 2, "**"); // "1**4"
s.size()와 s.length()는 모두 문자열의 길이를 반환한다.
string s="456789";
s.length(); // 6
s.size(); // 6
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12948
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
'Code KATA > 알고리즘 코드카타' 카테고리의 다른 글
[2024.12.30] 제일 작은 수 제거하기 (1) | 2024.12.30 |
---|---|
[2024.12.29] 없는 숫자 더하기 (3) | 2024.12.27 |
[2024.12.27] 음양 더하기 (0) | 2024.12.27 |
[2024.12.26] 나누어 떨어지는 숫자 배열 (0) | 2024.12.26 |
[2024.12.25] 서울에서 김서방 찾기 (0) | 2024.12.26 |