가운데 문자 출력

지창언·2022년 7월 24일

codingTest

목록 보기
13/29

Index

1.문제
2.내 코드
3.발전시킨 코드


문제

문자열을 입력받아 가운데에 위치한 문자를 출력한다.
(길이가 홀수일 경우, 1개
짝수일 경우, 2개를 출력)


내 코드

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(s){  
                // 짝수일경우, parseInt()-1 번 인덱스 추가
                // 홀수일 경우, parseInt() 인덱스만
                let answer ='',middle=parseInt(s.length/2);
                if(s.length%2 ===0){
                    answer +=s[middle-1]+s[middle];
                }else{
                    answer += s[middle];
                }
                return answer;
            }
            console.log(solution("study"));
        </script>
    </body>
</html>

우선 parseInt(s.length/2)를 통해 중간위치 인덱스값을 찾아준다.
parseInt()의 경우 소숫점 이하자리는 버리고 정수를 반환한다.
❗️(Math.floor() 바닥함수로 대체 가능)

입력받은 문자열이 홀수일 경우, 가운데 위치하는 문자는 1개이다.
짝수일 경우, 두개이다. (이 경우, middle index -1 위치의 요소를 추가해준다)
"tomato" 단어의 경우 middle index = 3이며, middle index-1 = 2 이다.
따라서 2,3 번째 인덱스인 "ma"를 반환할 수 있게 된다.


발전시킨 코드

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(s){  
                let answer, middle=Math.floor(s.length/2);
                if(s.length%2 ===0){
                    answer =s.substring(middle-1,middle+1);
                }else{
                    answer =s.substring(middle,middle+1);
                }
                return answer;
            }
            console.log(solution("study"));
        </script>
    </body>
</html>

위 코드는 좀 더 직관적으로 바꾼 것이다.
기존 parseInt() 함수를 Math.floor () 바닥함수로 변경해 주었고,
answer +=s[middle-1]+s[middle] 로 문자하나하나씩 더해준 것을
substring()함수를 통해서 간소화 하였다.


profile
프론트엔드 개발자가 되고 싶은...

0개의 댓글