발자취
[프로그래머스 Lv.1 / C언어] Day38. 핸드폰 번호 가리기 본문
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의 각 요소를 '*'로 변경해 줬다.

정답!

끝!
'코딩테스트 > Daily Coding (C, C++)' 카테고리의 다른 글
| [백준 / C언어] Day40. 소수 구하기 (1929) (0) | 2024.07.13 |
|---|---|
| [프로그래머스 Lv.1 / C언어] Day39. 가운데 글자 가져오기 (0) | 2024.07.12 |
| [프로그래머스 Lv.1 / C++] Day37. 제일 작은 수 제거하기 (0) | 2024.07.10 |
| [프로그래머스 Lv.1 / C++] Day36. 나누어 떨어지는 숫자 배열 (0) | 2024.07.09 |
| [백준 / C언어] Day35. 소수 찾기 (1978) (0) | 2024.07.08 |