JS 알고리즘 문제풀이/섹션 1. 기본문제 풀이

15.가운데 문자 출력(substring, substr)

crab. 2022. 1. 12. 11:33

📌강의정리

홀수면 가운데 하나, 짝수면 가운데에 2개를 출력해야하는 문제이다.

Math.floor를 쓰면 내림이니까 몫을 얻을 수 있다.

Math.floor(s.length/2)는 홀수이면 가운데의 인덱스번호를 가리킨다.

그 다음 if를 이용해서 %2를 이용해 주어진 문자열의 길이가 홀수인지 짝수인지 판별한다.

홀수이면 s.substring(mid, mid+1); 를 하면 mid부터 mid+1전까지이므로

mid만 나오게 된다.

짝수인경우는 가운데 두개중 높은부분이 mid이므로

s.substring(mid-1, mid+1)을 해야 가운데 두개 (mid-1, mid )가 인덱스기준 주소로 나온다.

또한 substr도 있다. substr(2,4)는 2번 인덱스부터 4개를 뽑아 5번인덱스까지 총 4개를 뽑아내라는 뜻이다.

📌느낀점

새로운 메서드를 배웠다. sunstring과 substr인데 처음 풀었을 때는 이걸 안쓰고 풀었지만 이제는 이걸 쓰고 풀어봐야겠다.

또한 나는 중간값을 구할때 Math.ceil을 썼는데 이게 아니라 Math.floor를 쓰면 따로 또 -1을 할필요 없이 바로 끝낼 수 있다.

항상 문제를 빠르게 푸는 것도 중요하지만 순간적으로 어떻게 풀지 고민을 해봐야 한다.

//나의 코드
<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(s){  
                if(s.length % 2 != 0) {
                    let mid = Math.ceil(s.length/2)
                    return s[mid-1];
                }
                else{
                    let mid1 = s.length/2;
                    let mid2 = mid1+1;
                    return s[mid1-1]+s[mid2-1];
                } 
            }
            console.log(solution("abcdefg"));
        </script>
    </body>
</html>
//강사님 코드
<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(s){  
                let answer;
                let mid=Math.floor(s.length/2)
                if(s.length%2===1) answer=s.substring(mid, mid+1);
                else answer=s.substring(mid-1, mid+1);
                //if(s.length%2===1) answer=s.substr(mid, 1);
                //else answer=s.substr(mid-1, 2);
                return answer;
            }
            console.log(solution("study"));
        </script>
    </body>
</html>

'JS 알고리즘 문제풀이 > 섹션 1. 기본문제 풀이' 카테고리의 다른 글

17.중복단어제거  (0) 2022.01.12
16.중복문자제거(indexOf)  (0) 2022.01.12
14.가장 긴 문자열  (0) 2022.01.12
13.대소문자변환  (0) 2022.01.12
12.대문자로 통일  (0) 2022.01.12