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
'프로그래머스 > C' 카테고리의 다른 글
프로그래머스 Level 1 : 두 정수 사이의 합 C언어 (0) | 2021.12.14 |
---|---|
프로그래머스 Level 1 : 부족한 금액 계산하기 C언어 (0) | 2021.12.05 |
프로그래머스 Level 1 : 나머지가 1이 되는 수 찾기 C언어 (0) | 2021.11.29 |
프로그래머스 Level 1 : 2016년 C언어 (0) | 2021.11.28 |
프로그래머스 Level 1 : 두 개 뽑아서 더하기 C언어 (2) | 2021.11.28 |
댓글