코딩 테스트 연습 > 연습문제 > 핸드폰 번호 가리기
C언어에 대해서 아직 학습을 진행하지 않은 상태에서,
배열과 포인터에 대해 이해하고 여러 블로그 글을 참고하여 문제를 해결했습니다.

구현한 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
void setElement(char *arr){
*arr = '*';
}
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char *solution(const char *phone_number) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
// char *answer = phone_number;
//char* answer = (char*)malloc(sizeof(phone_number));
printf("사이즈 입니다 = %d\n", strlen(phone_number));
printf("%p\n", phone_number[0]);
printf("%p\n", phone_number[1]);
printf("%p\n", phone_number[2]);
// int phoneNumSize = strlen(phone_number);
// int a = phoneNumSize;
int a = strlen(phone_number);
printf("%d\n", a);
for(int i=0; i<a-4; i++){
printf("%c\n", phone_number[i]);
// char phone_number[i] = '*';
setElement(&phone_number[i]);
}
char *hello = "Hello";
printf("%c\n", hello[0]);
printf("%c\n", hello[1]);
printf("%c\n", hello[2]);
hello[0] = '*';
int *ptr = hello;
*ptr = '*';
printf("%p\n", ptr);
printf("%c\n", hello[0]);
return phone_number;
}
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
void setElement(char *arr){
*arr = '*';
}
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char *solution(const char *phone_number) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
char *answer = (char*)malloc(1);
int a = strlen(phone_number);
for(int i=0; i < a-4; i++){
setElement(&phone_number[i]);
}
strcpy(answer, phone_number);
return answer;
}
다른 사람들의 풀이
https://programmers.co.kr/learn/courses/30/lessons/12948/solution_groups?language=c&type=all
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
참고 및 학습한 사이트
https://sckllo7.tistory.com/entry/sizeof-%EC%97%B0%EC%82%B0%EC%9D%98-%ED%95%A8%EC%A0%95
sizeof 연산의 함정
C에서 sizeof는 해당 변수 혹은 자료형의 크기를 알아 보고자 할때 쓰이며 동적 메모리 할당인 malloc을 비롯한 여러 함수와 복합적으로 사용할 경우가 적지 않게 있습니다. 그러나 이 sizeof 를 쓸
sckllo7.tistory.com
https://dojang.io/mod/page/view.php?id=345
C 언어 코딩 도장: 41.1 문자열 길이 구하기
41 문자열의 길이를 구하고 비교하기 이번에는 문자열의 길이를 구하는 방법, 두 문자열이 같은지 비교하는 방법을 알아보겠습니다. 41.1 문자열 길이 구하기 문자열은 문자가 여러 개 모여있으
dojang.io
https://dojang.io/mod/page/view.php?id=330
C 언어 코딩 도장: 39.3 배열 형태로 문자열 선언하기
문자열은 문자(char) 배열에 저장할 수도 있습니다. char 배열이름[크기] = "문자열"; 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요. string_array.c #include int main() { char s1[10] = "Hello"; // 크기
dojang.io
https://rumiamochi.tistory.com/20
[C언어] 16. 포인터
※ 이 포스팅은 VISUAL STUDIO 2019를 사용합니다. 안녕하세요. 루미아입니다. 자, 드디어 올 것이 왔습니다.. 바로 C언어 안에서 가장 어렵다는 포인터에 대해서 배워보겠습니다. 포인터란? 포인
rumiamochi.tistory.com
결정적으로 도움되었던 사이트
https://dojang.io/mod/page/view.php?id=562
C 언어 코딩 도장: 64.1 배열 매개변수 사용하기
64 함수에서 배열 매개변수 사용하기 함수에서 배열을 매개변수로 사용하면 연속된 값을 전달할 수 있고, 전달한 배열의 요소를 함수 안에서 변경할 수 있습니다. 이번에는 1차원 배열과 2차원
dojang.io
https://blockdmask.tistory.com/56
[C언어] 배열포인터, 포인터배열 정리 (pointer)
안녕하세요! BlockDMask 입니다 오늘은 많이들 햇갈려 하는 array pointer pointer array pointer pointer array array pointer. C언어의 포인터 개념과 배열 개념을 조금은 알고 계셔야 내용을 이해할 수 있을..
blockdmask.tistory.com
char []와 char *
어제 후배 녀석과 이야기하다가 char[]와 char *의 차이점에 대한 이야기를 하게 되었다. C 언어를 처음 가르칠 때 편의상 char[]와 char *를 혼용해서 쓰도록 가르친 탓인지 의외로 컴공과 3-4학년 이상
skyul.tistory.com
https://dojang.io/mod/page/view.php?id=274
C 언어 코딩 도장: 34.0 포인터 사용하기
지금까지 우리는 값을 저장할 때 변수를 사용했습니다. 그럼 변수는 어디에 생기는 것일까요? 다음과 같이 변수는 컴퓨터의 메모리에 생성됩니다. 즉, 메모리에 일정한 공간을 확보해두고 원하
dojang.io
C 언어 레퍼런스 - malloc 함수
modoocode.com
https://dojang.io/mod/page/view.php?id=285
C 언어 코딩 도장: 35.1 메모리 할당하기
메모리를 사용하려면 malloc 함수로 사용할 메모리 공간을 확보해야 합니다(memory allocation). 이때 필요한 메모리 크기는 바이트 단위로 지정합니다(메모리 할당, 해제 함수는 stdlib.h 헤더 파일에 선
dojang.io
https://docs.microsoft.com/ko-kr/cpp/c-runtime-library/reference/malloc?view=msvc-160
malloc
자세한 정보: malloc
docs.microsoft.com
https://zoosso.tistory.com/801
[C] 문자열 배열과 문자열 배열 동적 할당
문자열 배열과 문자열 배열 동적 할당 문자열의 배열을 2차원배열을 쓸 때의 문제점 C언어는 Java나 C++처럼 문자열을 다루는 string 자료형이 없다. 대신에 문자열은 널 문자로 끝나는 문자(char)
zoosso.tistory.com
https://dojang.io/mod/page/view.php?id=751
C 언어 코딩 도장: 10.2 상수 사용하기
이번에는 자료형 앞에 const를 붙여서 상수를 사용해보겠습니다. const 자료형 상수이름 = 값; const.c #include int main() { const int con1 = 1; // 상수. 선언과 동시에 초기화 const float con2 = 0.1f; // 상수. 선언
dojang.io
https://dojang.io/mod/page/view.php?id=330
C 언어 코딩 도장: 39.3 배열 형태로 문자열 선언하기
문자열은 문자(char) 배열에 저장할 수도 있습니다. char 배열이름[크기] = "문자열"; 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요. string_array.c #include int main() { char s1[10] = "Hello"; // 크기
dojang.io