티스토리 뷰

 

처음 이 문제를 직면했을때 

길이를 2로 나누었을 때 0인경우와 아닌 경우, slice를 이용해 자리수를 잘라내면 될 것 같은데

까지는 생각했으나 그 이상으로 무엇을 해야하는지 알 수가 없었다.

 

 

초기에 작성해 본 식

function solution(s) {
    const middle = s.length % 2
    if (middle === 0) {
        
    }
}

 

그리고 아무생각이 없음... slice를 어떻게 써먹어야하는지..

이렇게 저렇게 해보았으나 빨간 글자들 뿐..😬

 

 

그래서 이번 문제는 chat GPT의 도움을 받아보기로.. 😭

function solution(s) {
    const middle = Math.floor(s.length / 2);
    return s.length % 2 === 0 ? s.slice(middle - 1, middle + 1) : s.charAt(middle);
}

 

글자의 가운데 인덱스 값을 구하기 위해

글자 길이 / 2 를 하고 홀수일때 소수점을 버리기 위해 Math.floor를 사용.

 

글자 길이 % 2 를 했을때 홀수 개수인지, 짝수 개수인지 확인하고

짝수라면 총 2개의 글자가 구해져야 하므로 글자에서 middle - 1, midle +1 을 구해주고 

홀수라면 charAt매서드를 이용해서 middle을 겟!!

 

charAt
  • 문자열에서 특정 인덱스에 위치하는 유니코드 단일문자를 반환한다.
  • 매개변수로는 index 값을 1개를 받는다.
  • 만약 매개변수로 아무런 값도 전달하지 않으면 0번째 인덱스 값을 반환해 준다.

 

slice
  • 배열에 주어진 being index 부터 end index 까지(end indx는 미포함)에 대한 새로운 배열 객체로 반환한다.                 원본 배열은 바뀌지 않는다.
  • 매개변수로는 being index, end index 2개를 받는다