알고리즘 문제 풀기 Level1 "가운데 글자 가져오기"
가운데 글자를 반환하는 함수만들기
문제
주어진 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* s) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
char* answer = (char*)malloc(1);
return answer;
}
풀이
문자열의 길이와 인덱스를 알면 풀 수 있다. 문자열의 길이가 짝수인지 홀수인지 판별한다. 짝수이면 가운데 두 글자를 반환하고, 홀수이면 가운데 한 글자만 반환한다.
length와 Math.floor() 를 이용한다.
function solution(s) {
var answer = '';
if (s.length % 2 == 0 ) { // 짝수일 경우,
answer = s[s.length / 2 - 1] + s[s.length / 2];
} else {
answer = s[Math.floor(s.length/2)]; // 홀수일 경우, 반내림 하기
}
return answer;
}
짝수면 문자열의 길이를 2로 나누어 해당 인덱스의 이전 값과 해당 인덱스 값을 출력해주면 된다. 문자열의 길이가 홀수일 때 2로 나누면 나눈 값은 소숫점이 될 것이다. 그러므로 나눈 값에 Math.floor()메서드를 사용해 반내림을 해주어야 한다. 반올림이 아닌 반내림을 하는 이유는 인덱스는 0부터 시작하기 때문. 문자열의 길이가 5인 “abcde”인 경우 5 / 2 = 2.5인데, 인덱스 값을 구하려면 반내림을 해야한다.