:ledger: 문제 설명

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

:one: 제한사항

  • s는 길이가 1 이상, 100이하인 스트링입니다.

:two: 입출력 예

arr return
“abcde” “c”
“qwer” “we”

:ledger: 문제 풀이

const solution = s => {    
    const center = Math.floor(s.length / 2);
    if(s.length % 2 === 0) {
      return s.slice(center - 1, center + 1)  
    }else{
        return s[center];  
    } 
}

:one: 함수 선언

  • 화살표 함수를 사용하여 s를 매개변수로 받는다.

:two: 풀이

  • 먼저 가운데 글자를 가져오기 위해 소수점을 제외한 길이/2 값을 center 변수에 할당
  • if문을 사용하여 짝수인지 홀수인지 판별함
  • 짝수일 경우 가운데 두 글자를 가져오기 위해 매개변수로 받은 sslice를 사용하여 (start, end) 가운데 두 글자를 리턴함
  • 홀수일 경우 가운데 글자를 리턴함

:three: 결과 반환

  • s = "abcde" 대입하면 가운데 글자임 “c”를 리턴함
  • s = "qwer" 대입하면 가운데 두글자인 “we”를 리턴함

:four: 실행

  • solution("abcde") 실행하면 “c” 출력
  • solution("qwer") 실행하면 “we” 출력

:fire: 다른 사람의 풀이 참고

이번 문제는 스파르타 코딩클럽 알고리즘 풀이 과정에서도 나온 문제이다. 가운데 글자를 구하기 위해 length/2와 짝수일때 홀수일때를 고려해 문제를 풀어봤고 더 베스트인 코드는 없다 생각했지만 역시 고수는 많다..

// [156명] substr 함수와 Math 함수를 사용한 풀이 과정
function solution(s) {
    return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);
}

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges