단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
s | return |
---|---|
"abcde" | "c" |
"qwer" | "we" |
function solution(s) {
const centerNum = ~~(s.length/2);
return s.length%2 !==0 ? s.slice(centerNum, centerNum+1) : s.slice(centerNum-1,centerNum+1)
}
가운데 글자를 가져오기 위한 인덱스를 구하기 위해 문자열의 길이를 2로 나누고, 정수가 아닐 경우의 처리를 위해 ~~연산자를 추가하였다. 그리고 문자열의 길이가 홀수 일때는 문자열에서 가운데 인덱스에 해당하는 요소 하나만을, 문자열이 짝수일 땐 가운데 인덱스에 해당하는 요소 두개를 반환하도록 코드를 작성했다.
function solution(s) {
const mid = Math.floor(s.length/2);
return s.length %2 === 1 ? s[mid] : s[mid-1]+s[mid];
}
나와 같은 방식으로 생각을 했는데 리턴을 할 때 굳이 slice()
를 사용하지 않고 문자열에 해당 인덱스의 요소를 바로 리턴하였다. 문자열도 s[idx]
와 같이 접근해서 반환할 수 있다는 걸 잊고 있었다. ㅎㅎ. 또 비슷한 방식으로는 어차피 해당 문자열의 가운데 인덱스를 구했기 때문에 substr
이나 charAt
을 사용해서 그 인덱스에 해당하는 요소를 리턴하는 풀이가 많이 보인다.