실전 문제 풀이 - 가운데 글자 가져오기 Practical Problem Solving - Get middle letter

문제 설명

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

재한사항

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

입출력 예

s
return
 

풀어보기

문자열의 길이가 짝수인 경우 :
예를 들어, "good"의 가운데 글자는 1,2번 인덱스를 잡으면 된다. 문자열의 길이를 2로 나눈 값(mid)이 2이니까 mid-1부터 시작해서 2개만큼 잘라주면 된다. substring 메서드를 사용하려면 2번째 인자를 전달할 때 유의해야할 부분이 있다. 시작인덱스는 그대로 포함되지만 2번째 인자는 1만큼 증가시켜서 전달해야한다는 것이다.
substring(시작인덱스, 마지막인덱스+1)로 호출해주어야 한다. (substr 메서드도 있는데 이건 1번 인자에 그대로 시작인덱스를 주고, 2번 인자에 몇 개 자를지 전달한다.)
 
문자열의 길이가 홀수인 경우 :
예를 들어 "study"의 가운데 글자는 문자열의 길이를 2로 나눈 값 = 2.5이므로 정수로 바꾸어주어야 하는데 Math의 빌트인 메서드 중에 round()와 floor()를 알고 있어야 한다.
 
Math.round() 함수는 입력값을 반올림한 수와 가장 가까운 정수 값을 반환합니다.
Math.floor() 함수는 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환합니다.
Math.round(2.5) // 3
Math.floor(2.5) // 2
round처럼 사실상 반올림하려는 게 아니라 2.5과 같이 소수점이 있을 때 같거나 작은 정수인 2로 바꾸어주어야 한다. 배열 인덱스로 2를 접근해야 맞다.

소스코드

function solution(s) {
    let answer = 0;
    let mid = Math.floor(s.length / 2);
    if (s.length % 2 === 1) answer = s.substring(mid, mid + 1);
    // === substr(mid, 1)
    else {
        answer = s.substring(mid - 1, mid + 1); // === substr(mid-1, 2)
    }
    return answer;
}