본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+ Java언어 내용도 포함되어있습니다. )
https://school.programmers.co.kr/learn/courses/30/lessons/12948?language=cpp
1.문제설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때,
전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부*으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
2. 문제해결 접근
- 입력된 문자열을 배열에 담는다
- 배열의 인덱스 뒷 4자리 숫자를 제외한 나머지를 replace()처리한다
3.답안 : [언어 : Java ]
public static String solution(String phone_number) {
String answer = "";
int num = phone_number.length()-4;
for (int i = 0; i < phone_number.length(); i++) {
if( i<num) {
answer = answer+"*";
}else {
answer = answer + phone_number.charAt(i);
}
}
return answer;
}
막상 문제해결에 들어가보니 반드시 배열이 필요한 문제는 아니었다....
lenghth()를 이용해서, 문자열의 길이에서 -4 까지를 *로 치환,
나머지는 char.At(i); 로 인자로 받은 문자를 그대로 담아 반환하면 쉽게 풀리는 문제였다.
4. C++ 답안
위와 같은 방식의 C++ 문법
#include <string>
#include <vector>
using namespace std;
string solution(string phone_number) {
string answer = "";
int i;
for(i = 0 ; i < phone_number.size()-4; i++){
answer += "*";
}
answer += phone_number.substr(i,4);
return answer;
}
replace()를 이용한 코드
문자열.replace(시작 위치, 길이, 치환 문자열)
#include <string>
#include <vector>
using namespace std;
string solution(string phone_number) {
string answer = phone_number;
for (int i = 0; i < answer.size() - 4; i++) {
// 문자열.replace(시작 위치, 길이, 치환 문자열)
answer.replace(i, 1, "*");
}
return answer;
}
인자를 문자열 변수에 담아, 뒷 4자리를 제외한 나머지 부분을 반복문으로 문자로 치환
#include <string>
#include <vector>
using namespace std;
string solution(string phone_number) {
string answer = phone_number;
for (int i = 0; i < answer.size() - 4; i++)
{
answer[i] = '*';
}
return answer;
}
'알고리즘 > [프로그래머스]Lv.1' 카테고리의 다른 글
[프로그래머스]Lv1. 없는 숫자 더하기 (0) | 2022.10.31 |
---|---|
[프로그래머스]Lv1. 약수의 개수와 덧셈 (0) | 2022.10.31 |
[프로그래머스]Lv1. 문자열 다루기 (0) | 2022.10.31 |
[프로그래머스]Lv1. 문자열을 정수로 (0) | 2022.10.26 |
[프로그래머스]Lv1. 정수 제곱근 판별 (0) | 2022.10.26 |