본문 바로가기

알고리즘/[프로그래머스]Lv.1

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

본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+  Java언어 내용도 포함되어있습니다. )

 

https://school.programmers.co.kr/learn/courses/30/lessons/12948?language=cpp 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

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