발자취
[프로그래머스 Lv.1 / C언어] Day39. 가운데 글자 가져오기 본문
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 값을 포함해 줘야 뒤에 쓰레기 값이 들어오지 않는다!

정답!

끝!
'코딩테스트 > Daily Coding (C, C++)' 카테고리의 다른 글
| [백준 / C언어] Day41. 골드바흐의 추측 (6588) (0) | 2024.07.14 |
|---|---|
| [백준 / C언어] Day40. 소수 구하기 (1929) (0) | 2024.07.13 |
| [프로그래머스 Lv.1 / C언어] Day38. 핸드폰 번호 가리기 (0) | 2024.07.11 |
| [프로그래머스 Lv.1 / C++] Day37. 제일 작은 수 제거하기 (0) | 2024.07.10 |
| [프로그래머스 Lv.1 / C++] Day36. 나누어 떨어지는 숫자 배열 (0) | 2024.07.09 |