코딩하는 해달이

[level 1] 핸드폰 번호 가리기 본문

개인 공부/프로그래머스

[level 1] 핸드폰 번호 가리기

코딩하는 해달 2022. 7. 19. 23:13

문제 설명

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

제한 조건

  • phone_number는 길이 4 이상, 20이하인 문자열입니다.

문제 이해

길이가 4이상 20 이하인 문자열의 뒷 4자리를 제외한 나머지 숫자를 전부 *로 바꾸어야 한다.

따라서 전체 문자열의 길이와 뒤의 4자리만 무슨 숫자인지 알면 문자열의 길이에서 4를 뺀 만큼 *을 넣고, 남는 자리에 4자리의 숫자를 넣으면 된다.

 

알고리즘

뒤의 4자리 다른 벡터에 저장하며 원본 벡터에서 삭제 → 원본 벡터를 하나씩 지우면서 길이 확인 → 확인한 길이만큼 '*' 삽입 → 뒤의 4자리 삽입

 

풀이 코드

#include <string>
#include <vector>
#include <iostream>

using namespace std;

string solution(string phone_number) {
    string answer = "";
    int last_num[4] = { 0, };
    int i;

    for (i = 0; i < 4; i++) //번호의 뒷 4자리 저장 후 phone_number에서 삭제
    {
        last_num[i] = phone_number.back();
        phone_number.pop_back();
    }

    for (i = 0; phone_number.length() > 0; i++)//남은 phone_number 삭제하면서 몇자리 번호인지 count
    {
        phone_number.pop_back();
    }

    for (int j = 0; j < i; j++)//뒤에 4자리를 제외한 번호 자리에 "*" 삽입
    {
        answer += "*";
    }

    for (i = 3; i >= 0; i--)//남은 4자리 번호 삽입
    {
        answer += last_num[i];
    }

    return answer;
}

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

 

프로그래머스

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

programmers.co.kr

 

반응형

'개인 공부 > 프로그래머스' 카테고리의 다른 글

[level 1] 평균 구하기  (0) 2022.07.19
[level 1] 하샤드 수  (0) 2022.07.19
[level 1] 행렬의 덧셈  (0) 2022.07.19
[level 1] x만큼의 간격이 있는 n개의 숫자  (0) 2022.07.19
[level 1] 직사각형 별 찍기  (0) 2022.07.19
Comments