단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
s는 길이가 1 이상, 100이하인 스트링입니다.
| s | return |
|---|---|
| "abcde" | "c" |
| "qwer" | "we" |
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h> //strlen 함수 사용
char* solution(const char* s) {
char* answer =(char *)malloc(sizeof(char) * 2);
int num = strlen(s); //s의 길이
int tmp = num/2; //중간지점 찾기
if(num%2==0){
answer[0]=s[tmp-1];
answer[1]=s[tmp];
answer[2]=NULL;
}
else {
answer[0]=s[tmp];
answer[1]=NULL;
}
return answer;
}
처음에는 짝수일 때는 0과 1에만 데이터 입력을 하고 홀수일 경우에는 0에만 데이터를 입력하였다. 그랬더니 뒤에 이상한 문자들이 붙어서 정답처리가 되지 않았다.
그래서 입력이 되지 않는 인덱스의 배열에 NULL값을 넣어 주었더니 이상한 문자들이 붙지 않았다.
원래 입력이 수행되어야 하는 인덱스에서 그치지 않고 하나 더 증가하여 NULL값을 입력해줘야하는 것 같다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
char* solution(const char* s) {
int len = strlen(s);
char * answer;
if(len%2) //길이가 홀수인 경우
{
answer = (char *)malloc(sizeof(char));
answer[0] = s[len/2];
}
else
{
answer = (char *)malloc(sizeof(char)*2);
answer[0] = s[len/2-1];
answer[1] = s[len/2];
}
return answer;
}
다른 사람의 풀이라고 나와있어서 맞는줄 알았는데 복사해서 다시 돌려보니 처음에 내가 겪었던 문제가 발생한다.
위에서 마지막 인덱스 다음에 NULL값을 입력시키는게 맞는 것 같다.