문제 설명
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
재한사항
s는 길이가 1 이상, 100이하인 스트링입니다.
입출력 예
s return
"abcde" "c"
"qwer" "we"
s의 길이를 구해서 중간 글자의 인덱스 번호를 찾아낸다.
slice()를 이용해서 문자를 가져온다.
slice() 함수 : slice() 함수는 배열로 부터 특정 범위를 복사한 값들을 담고 있는 새로운 배열을 만드는데 사용
🔸 첫번째 인자:시작 인덱스(index)
🔸 두번째 인자: 종료 인덱스(종료 인덱스는 새로운 배열에 포함되지 X)
👉 1트
function solution(s) {
var answer = '';
if(s.length % 2 ==0) {
answer = s.slice(s.length/2-1,3)
} else { answer = s.slice(parseInt(s.length/2),parseInt(s.length/2)+1)
}
return answer;
}
입출력 예에서는 정답이지만 채점해보니 실패였음
홀수 문자열의 계산식을 수정해아함.(parseInt()대신 Math.floor를 쓴다.)
-> parseInt()를 쓰는것과 Math,floor()를 쓰는 것의 차이?
parseInt() 함수는 주어진 문자열을 해석하여 정수로 변환하는 함수
그러나 parseInt()는 숫자가 아닌 문자열에서는 사용하지 않는 것이 좋다.
이유 1.부동 소수점 숫자: parseInt()는 부동 소수점 숫자를 정수로 변환할 때 문제가 발생할 수 있다. 예를 들어, parseInt(3.9)는 3을 반환하며, 이는 원하는 결과와 다를 수 있다.
이유 2.문자열 분석: parseInt()는 숫자를 찾기 위해 문자열을 처음부터 분석.
이는 필요 이상으로 오버헤드가 발생할 수 있으며, Math.floor()와 같은 더 적합한함수가 숫자의 소수 부분을 제거하기 위해 보다 명확하고 직접적인 방법을 제공
이유 3.가독성: Math.floor()는 명시적으로 소수 부분을 버린다는 의도를 나타내므로 코드의 의도가 명확하게 전달된다. 반면, parseInt()는 변수가 실제로 문자열일 때만 사용해야 하는 특정한 용도를 가지고 있다.
👉 제출 답안
function solution(s) {
var answer = '';
if(s.length % 2 ==0) {
answer = s.slice((s.length/2)-1,(s.length/2)+1)
} else { answer = s.slice(Math.floor(s.length/2),Math.floor(s.length/2)+1)
}
return answer;
}