발자취

[프로그래머스 Lv.1 / C언어] Day39. 가운데 글자 가져오기 본문

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

[프로그래머스 Lv.1 / C언어] Day39. 가운데 글자 가져오기

해린 2024. 7. 12. 01:01

2024. 07. 12 - 코딩테스트 스터디 Day39

 
 

01. 문제 설명

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두 글자를 반환하면 됩니다.

 

 

02. 제한사항

  • s는 길이가 1 이상, 100이하인 스트링입니다.

 

 

03. 입출력 예

s return
"abcde" "c"
"qwer" "we"

 

 

04. 풀이 및 답

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

// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* s) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    char* answer = (char*)malloc(strlen(s));
    int len = strlen(s);
    
    if (len % 2 == 1) {
        answer[0] = s[len / 2];
        answer[1] = NULL;
    }
    else {
        answer[0] = s[len / 2 - 1];
        answer[1] = s[len / 2];
        answer[2] = NULL;
    }
    
    return answer;

}

문자열 s의 길이만큼의 메모리 공간을 동적 할당받았다.

s의 길이를 변수 len에 저장한다.

 

len이 홀수라면, len을 2로 나눈 값이 인덱스인 문자가 가운데 글자이다.

len이 짝수라면, len을 2로 나눈 뒤 1을 빼준 값이 인덱스인 문자와 그다음 문자가 가운데 두 글자이다.

 

answer에 해당 문자들을 넣은 뒤, 리턴한다.

 

💎 주의 💎
꼭 문자열의 마지막에 NULL 값을 포함해 줘야 뒤에 쓰레기 값이 들어오지 않는다!

 

 

정답!

 


끝!