본문 바로가기
프로그래머스/C

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

by starfish22 2021. 11. 29.
728x90

▶문제 : 코딩 테스트 연습 - 가운데 글자 가져오기 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 가운데 글자 가져오기

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret

programmers.co.kr

 

▶코드 작성

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

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

    s += len / 2;//문자열 포인터 s의 주소를 문자열 가운데로 이동
    if (len % 2 == 0)//짝수일 때
    {
        s--;//한칸 뒤로
        strncpy(answer, s, 2);//두글자 복사
        answer[2] = '\0';//문자열 뒤에 널문자 추가
    }
    else
    {
        strncpy(answer, s, 1);//한글자 복사
        answer[1] = '\0';
    }

    return answer;
}

 

▶해석

포인터 s 의 주소 값을 가운데로 이동하기 위해 strlen으로 s 문자열의 길이를 구해 len 변수에 저장한 후 s 포인터에 2로 나눈 값을 증가시켰다. 그다음 짝수일 때 두 글자가 저장되어야 하므로 s--를 해주었고 문자열의 끝을 알려주기 위해 널문자를 추가하였다.

728x90

댓글