코딩테스트

프로그래머스 - 편지

오쟝 2023. 7. 11. 22:56

만약 "I love you~"라는 문구를 적고 싶으면 가로 길이의 최소가 22cm, "happy birthday!"는 30cm가 필요하다는 것을 알 수 있습니다. 여기서 편지지의 가로 최소 길이는 문자의 개수 * 2 라는 것을 알 수 있습니다.

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

// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
int solution(const char* message) {
    int answer = strlen(message)*2;
    return answer;
}

 

오늘도 solution 함수를 완성시켜 봅시다~~
solution 함수는 int를 리턴값으로 가지고, message라는 문자열을 매개변수로 가집니다~!

message는 매개변수이기 때문에 안에서 입력받을 필요가 없습니다!

int answer에 strlen 함수를 사용해서 message 문자열의 길이를 구한 뒤 2를 곱해주고, answer의 값을 리턴해주면~~~

solution 함수 완성 ! 성공 ! (●'◡'●)

 

 

** const **

const란 보통 특정 변수를 변하지 않는 상수로 선언할 때 자주 사용합니다.

*~는 ~라는 이름의 포인터가 가리키는 주소의 값

&~는 ~의 주소를 가리킨다

 

1. 상수를 가리키는 포인터 - const 자료형 *변수명 = 초기값;

상수를 가리키는 포인터는 포인터가 가리키는 대상을 상수화 시켜줍니다.

const int *MAX = &a; MAX라는 int형 포인터에 a의 주소를 넣어주고 a를 상수화 시켜줌

--> MAX의 주소는 변경이 가능하지만 MAX의 값은 변경이 불가능

-> MAX = &b; 가능 (MAX는 포인터.. MAX는 상수 a의 주소값에 있는 수를 가지고 있는데 이제 b의 주소값에 있는 수를 가지고 있을 뿐)

--> *MAX = 500; 불가능 (MAX는 포인터.. MAX는 a의 주소값에 있는 수를 가지고 있고 이 수는 상수임.. 그래서 못 바꿈 MAX를 바꾼다는 것 = a 값을 바꾼다)

 

2. 상수 포인터 - 자료형 const *변수명 = 초기값;

포인터 자체를 상수화 시켜줍니다.

int const *MAX = &a; MAX라는 int형 포인터에 a의 주소를 넣어주고 MAX를 상수화 시켜줌

--> MAX의 주소는 변경이 불가능하지만 MAX의 값은 변경이 가능

--> MAX = &b; 불가능 (MAX는 포인터.... MAX 자체가 상수기 때문에 MAX에 있는 주소값을 변경할 수는 없음)

--> *MAX = 500; 가능 (MAX는 상수지만 MAX가 가리키는 값을 바꾼다 = a의 값을 바꾸는 것과 동일하기 떄문에 가능)

 

3. 상수를 가리키는 상수 포인터 - const 자료형 const *변수명 = 초기값;

포인터와 포인터가 가리키는 대상 모두를 상수화 시켜줍니다.

const int const *MAX = &a;

--> MAX의 주소와 값 모두 변경 불가능

--> MAX = &b; 불가능 (MAX가 상수이기 때문에 변경 불가능)

--> *MAX = 500; 불가능 (a가 상수이기 때문에 MAX가 가리키는 주소의 값 변경 불가능)