[C] 핸드폰 번호 가리기, 배열과 포인터 [Algorithm]
Algorithm/Programmers

[C] 핸드폰 번호 가리기, 배열과 포인터 [Algorithm]

코딩 테스트 연습 > 연습문제 > 핸드폰 번호 가리기

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

 

https://skyul.tistory.com/28

 

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

 

https://modoocode.com/243

 

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