티스토리 뷰
□문제 설명
단어 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 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
char* answer = (char*)malloc(sizeof(char)*2);
int size = strlen(s);
if(size%2==0){
answer[0] = s[size/2 - 1];
answer[1] = s[size/2];
answer[2] = NULL;
}
else{
answer[0] = s[size/2];
answer[1] = NULL;
}
return answer;
}
□코드 분석
단계 | 과정 |
변수 & 배열 | char포인터변수(배열) answer를 malloc을 사용하여 크기를 동적으로 지정한다. 주어진 문자열(s)의 길이가 저장된 변수 size |
if | 가운데 글자 구하기 주어진 문자열(s)의 길이가 짝수일 경우 s[절반-1] + s[절반]이 저장되어야 한다. 주어진 문자열(s)의 길이가 홀수일 경우 s[절반]이 저장되어야 한다. 마지막 방에는 문자열의 끝을 지정하기 위해 NULL를 할당해야 한다. 이때 절반이란? 문자열의 길이가 5일때, 5/2 = 2 즉 s의 2번방이 가운데 글자이다. 문자열의 길이가 8일때, 8/2 = 4 즉 s의 3번방과 4번방이 가운데 글자이다. |
□주의할점
순조롭게 풀다가, 아래 사진처럼 계속해서 결과 뒤에 쓰레기값이 붙어 나왔다. 왜그런가,, 했더니 마지막 방에 NULL값을 할당했더니 해결되었다! |
//비정상 작동 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
char* solution(const char* s) {
char* answer = (char*)malloc(sizeof(char)*2);
int size = strlen(s);
if(size%2==0){
answer[0] = s[size/2 - 1];
answer[1] = s[size/2];
}
else{
answer[0] = s[size/2];
}
return answer;
}
□의문점
malloc을 사용하여 answer의 크기를 지정할 때, 1이던 sizeof(char)*3이던 같은 값이 나온다. (에러가 나지 않음) 왜그럴가? |
□링크
코딩테스트 연습 - 가운데 글자 가져오기
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret
programmers.co.kr
About Me
💻GitHub/KimSky904 KimSky904 - Overview Department of New Media Software. KimSky904 has 8 repositories available. Follow their code on GitHub. github.com
code-review.tistory.com
'[코테] > [Programmers Lv1]' 카테고리의 다른 글
[Programmers] Lv1_문자열 내림차순으로 배치하기 (C/C++) (0) | 2021.06.07 |
---|---|
[Programmers] Lv1_두 정수 사이의 합 (C/C++) (0) | 2021.06.06 |
[Programmers] Lv1_두 개 뽑아서 더하기 (C/C++) (0) | 2021.06.05 |
[Programmers] Lv1_2016년 (C/C++) (0) | 2021.06.05 |
[Programmers] Lv1_3진법 뒤집기 (C/C++) (0) | 2021.06.03 |
댓글
공지사항
최근에 올라온 글
TAG
- lv2
- 구름에듀
- cospro기출
- 기출문제
- 구름에듀 기출문제
- 자바
- 프로그래머스
- lv1
- YBM
- 1급
- 코딩테스트
- C++
- 구름 기출문제
- Cos Pro
- 배열
- 배열활용문제
- YBM기출
- cospro기출문제
- 코스프로
- COSPRO 2급
- groomedu
- c언어
- Java
- 알고리즘
- C
- groom
- c언어 기출문제
- programmers
- CosPro
- 연습문제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함