단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요.
단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
제한사항
- s는 길이가 1 이상, 100이하인 스트링입니다.
입출력 예
s return
abcde c
qwer we
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해>서 사용하세요.
char* solution(const char* s) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
int len = strlen(s);
char *answer;
if (len % 2 == 0)
{
answer = (char *)malloc(3);
answer[0] = s[(len / 2) - 1];
answer[1] = s[(len / 2)];
answer[2] = '\0';
}
else
{
answer = (char *)malloc(2);
answer[0] = s[len / 2];
answer[1] = '\0';
}
return (answer);
- 풀이 :
- len을 구함
- 짝수인 경우
- s[len / 2 - 1], str[len - 2]이 각각 가운데 문자 두 개가 됨.
- 그 이유는 만약에 len이 4인 경우 len / 2 - 1은 1인데, 인덱스상의 1은 사실상 문자열의 두 번째 이므로.
- 홀수인 경우
- s[len / 2] 가 가운데 문자가 됨.
- 그 이유는 만약에 len이 5인 경우 len / 2는 버림 계산을 하여 2가 되는데,
- 인덱스 상의 2는 사실상 세 번째 문자이므로.
'Algorithm' 카테고리의 다른 글
알고리즘 1부터 n까지의 합 - 가우스 (0) | 2020.06.04 |
---|---|
알고리즘 공부, 어떻게 시작할까 (0) | 2020.06.04 |
programmers - 문자열 내림차순으로 배치하기 (0) | 2020.03.14 |
programmers - 두 정수 사이의 합 (0) | 2020.03.12 |
Programmers - 2016년 (0) | 2020.03.12 |
최근댓글