발자취

[프로그래머스 Lv.1 / C언어] Day38. 핸드폰 번호 가리기 본문

코딩테스트/Daily Coding (C, C++)

[프로그래머스 Lv.1 / C언어] Day38. 핸드폰 번호 가리기

해린 2024. 7. 11. 00:14

2024. 07. 11 - 코딩테스트 스터디 Day38

 
 

01. 문제 설명

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

 

 

02. 제한사항

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

 

 

03. 입출력 예

phone_number return
"01033334444" "*******4444"
"027778888" "*****8888"

 

 

04. 풀이 및 답

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* phone_number) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    char* answer = (char*)malloc(sizeof(char) * strlen(phone_number));
    strcpy(answer, phone_number);
    
    for (int i = 0; i < strlen(phone_number) - 4; i++) {
        answer[i] = '*';
    }
    
    return answer;
}

우선 phone_number는 const로 주어졌기 때문에 answer에 복사하여 사용하도록 하겠다.

strlen 함수를 이용하여 phone_number의 길이를 알아내, char의 크기와 곱한 만큼의 공간을 동적 할당받았다.

(근데 습관적으로 sizeof 함수를 사용했는데 생각해 보니 char의 크기는 1바이트이므로 굳이 곱해줄 이유가 없는 듯하다)

 

strcpy 함수를 통하여 phone_number의 내용을 answer에 복사하였다.

 

i가 0일 때부터 'phone_number 길이 - 4' 일 때까지 반복문을 돌면서 answer의 각 요소를 '*'로 변경해 줬다.

 

 

정답!

 


 

끝!