WHAT I LEARNED/Algorithm

[프로그래머스 / 자바스크립트] 가운데 글자 가져오기

보니bonnie 2022. 1. 24. 15:41
728x90

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

 

💡 나의 답안

function solution(s) {
    var answer = '';
    
    if (s.length % 2 == 0) {
      answer = s[s.length / 2 - 1] + s[s.length / 2];
    } else {
      answer = s[s.length / 2 - 0.5]
    }
    
    return answer;
}

//console.log(solution("abcde"))

 

먼저, 단어의 길이(개수)를 사용하여 조건문을 만들었습니다.

 

짝수의 경우, 단어의 길이(개수)를 반으로 나누었을 때 나오는 숫자번째와 +1 된 숫자가 가운데였습니다.

ex. abcd = 4글자

      > 4 / 2 = 2

      > 2번째 글자(b)와 2 +1인 3번째 글자(c)가 가운데 글자

 

홀수의 경우, 똑같이 단어의 길이(개수)를 반으로 나누었을 때에서 소숫점을 없애면, 즉 +0.5를 하게 된 숫자번째의 자리가 가운데였습니다.

ex. abc = 3글자

      > 3 / 2 = 1.5

      > 1.5+0.5 = 2(번째 글자 = b)

 

ex2. abcde = 5글자

        > 5 / 2 = 2.5

        > 2.5+0.5 = 3(번째 글자 = c)



if (s.length % 2 == 0) {       // 짝수 구분하기
      answer = s[s.length / 2 - 1] + s[s.length / 2];    // 여기까지가 짝수의 가운데 글자 가져오는 부분
    } else {
      answer = s[s.length / 2 - 0.5]   // 여기가 홀수의 가운데 글자 가져오는 부분
    }

 

대괄호([]) 안의 배열들은 시작이 0부터 시작하므로 abcd 에서 가운데 'b'는 2번째가 아니라, 배열에서의 1번째 요소가 됩니다.

그래서 위에서는 +1번째라고 했지만 (글자 자체를 보았을 때), 배열 안에서의 위치를 구해야하므로 -1을 적용시킨 것입니다.

 

홀수도 같게 적용해서 +0.5가 아니라 -0.5를 해주었습니다!

 

 

이상입니다!

 

 

(+) 문제를 풀고 다른 분들의 해결방법 보니 올림/내림/반올림 함수를 많이 사용하셔서

홀수부분을 answer = s[Math.floor(s.length / 2)]로도 바꿀 수 있었습니다!

(cf. Math.ceil 은 소수값을 올리는 함수이고 Math.floor 는 소수값을 버리는 함수이며, Math.round 는 반올림 함수입니다!)

 

 

📍출처 :  

https://programmers.co.kr/learn/courses/30/lessons/12903

 

코딩테스트 연습 - 가운데 글자 가져오기

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret

programmers.co.kr

 

728x90