얼렁뚱땅 개발 블로그

[프로그래머스] Level 1 - 가운데 글자 가져오기 본문

코딩테스트/프로그래머스

[프로그래머스] Level 1 - 가운데 글자 가져오기

김경원0519 2021. 4. 20. 12:05
반응형

문제

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

 

입출력 예시

  s retrun
"abcde" "c"
"qwer" "we"

 

풀이

1. 문자열 길이를 측정하여, 짝수인지 홀수인지 확인

2. answer에 동적할당을 해준다. ( calloc 사용 추천 )

  • 짝수 : answer의 크기를 3으로 해준다.
  • 홀수 : answer의 크기를 2로 해준다.
  • answer의 크기가 (글자 수 + 1)인 이유는 마지막에 NULL을 넣기 위해

3. answer에 s의 가운데 글자를 넣어준다. ( 길이 / 2 )

  • 짝수 : 두 글자를 첫번째 글자의 인덱스는 ((길이 / 2 ) - 1)이다.

코드

 

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


// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* s) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    char* answer;
    // s의 길이를 가져온다.
    int length = strlen(s);
    // answer의 배열 인덱스
    int index = 0;

	//length의 길이가 짝수인지 홀수인지 판별한다.
    if (length % 2 == 0) {
        answer = (char*)calloc(3, sizeof(char));
        answer[index++] = s[(length / 2) - 1];
        answer[index++] = s[(length / 2)];
    }
    else {
        answer = (char*)calloc(2, sizeof(char));
        answer[index++] = s[(length / 2)];
    }

    return answer;
}

 

추가 내용

calloc은 동적할당 시 자동으로 NULL이 들어간다. 그래서 answer의 마지막에 NULL을 따로 넣어줄 필요는 없다.

반응형
Comments