프론트엔드/프로그래머스

프로그래머스 - 가운데 글자 가져오기

0-SIK 2024. 3. 27. 11:30
728x90

문제

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

정답

function solution(s) {
    const arr = s.split("")
    const num = Math.floor(s.length / 2)
    
    if(s.length % 2 === 0) {
        const evenArr = [arr[num - 1], arr[num]]
        return evenArr.join("")
    } else {
        return arr[num]
    }
}
  • solution 함수는 문자열 s를 매개변수로 받습니다.
  • const arr = s.split("")를 사용하여 문자열 s를 배열로 변환합니다. 이 배열은 문자열의 각 글자를 요소로 갖습니다.
  • const num = Math.floor(s.length / 2)를 사용하여 문자열의 가운데 인덱스를 찾습니다. 만약 문자열의 길이가 홀수라면 정확히 가운데에 위치한 인덱스를, 짝수라면 가운데 두 글자의 시작 인덱스를 찾습니다.
  • if(s.length % 2 === 0)를 사용하여 문자열의 길이가 짝수인지 홀수인지 확인합니다. 짝수일 경우에는 가운데 두 글자를 반환해야 합니다.
  • 만약 짝수일 경우, evenArr 배열에 가운데 두 글자를 저장합니다. 이때 arr[num - 1]과 arr[num]을 사용하여 가운데 두 글자를 구합니다.
  • return evenArr.join("")를 사용하여 가운데 두 글자를 하나의 문자열로 합쳐 반환합니다.
  • 만약 홀수일 경우, arr[num]을 사용하여 가운데 글자를 반환합니다.
  • 함수의 실행 결과로 가운데 글자 또는 가운데 두 글자가 반환됩니다.

코드 최적화

function solution(s) {
    return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);
}
  • solution 함수는 문자열 s를 매개변수로 받습니다.
  • Math.ceil(s.length / 2)를 사용하여 문자열의 가운데 인덱스를 찾습니다. 이때 Math.ceil을 사용하여 소수점 이하를 올림하여 정수로 반환합니다. 이는 문자열의 길이가 홀수일 때 가운데 인덱스를 정확히 찾기 위함입니다.
  • -1을 사용하여 인덱스가 0부터 시작하도록 보정합니다.
  • s.length % 2 === 0 ? 2 : 1를 사용하여 문자열의 길이가 짝수인지 홀수인지 확인합니다. 짝수일 경우에는 가운데 두 글자를 반환해야 하므로 길이가 2를 반환하고, 홀수일 경우에는 가운데 한 글자를 반환해야 하므로 길이가 1을 반환합니다.
  • s.substr(start, length)를 사용하여 문자열 s에서 가운데 글자 또는 가운데 두 글자를 추출합니다. start는 가운데 글자의 시작 인덱스이고, length는 추출할 글자의 수입니다.
  • return evenArr.join("")를 사용하여 가운데 두 글자를 하나의 문자열로 합쳐 반환합니다.
  • 추출한 문자열이 함수의 반환 값으로 반환됩니다.
  • 함수의 실행 결과로 가운데 글자 또는 가운데 두 글자가 반환됩니다.
728x90