본문 바로가기
Algorithm/JavaScript

[basics] 가운데 문자 출력

by _sweep 2021. 12. 6.

자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다.

 

 

 

 

📋 문제

소문자로 된 문자열이 입력되면 그 문자열의 가운데 문자를 출력한다. 단, 문자열의 길이가 짝수일 경우 가운데 2개의 문자를 출력한다.

 

 

👉 입력

길이가 100을 넘지 않는 문자열이 입력된다.

 

 

👈 출력

문자열의 가운데 문자를 출력한다.

 

 

💡 사용된 개념

String.substring()

string 객체의 시작 인덱스로부터 종료 인덱스 전까지의 부분 문자열을 반환한다.

str.substring(indexStart[, indexEnd])
  • indexStart : 반환할 문자열의 시작 인덱스
  • indexEnd : 옵션. 반환할 문자열의 마지막 인덱스(포함하지 않는다.)

 

String.substr()

문자열의 특정 위치에서 시작하여 특정 문자 수만큼의 문자들을 반환한다.

str.substr(start [, length])
  • start : 추출하고자 하는 문자들의 시작 위치. 음수면 (문자열의 길이 + start)의 값으로 설정.
  • length: 옵션. 추출할 문자들의 숫자.

 

String.substring(a, b)는 a 인덱스에서부터 b 인덱스 전까지의 문자열 반환

String.substr(a, b)은 a 인덱스에서부터 b 만큼의 문자들 반환.

 

 

 

📝 풀이

 

<script>
    function solution(s) {
        let answer = "";
        if (s.length % 2) answer = s[Math.floor(s.length / 2)];
        else answer = s[s.length / 2 - 1] + s[s.length / 2];

        return answer;
    }
    console.log(solution("study"));
</script>

 

문자열을 받아 문자열의 길이가 홀수이면 문자열 길이의 절반에 해당하는 인덱스에 있는 문자를, 짝수이면 문자열 길이의 절반에 해당하는 인덱스의 앞 문자와 해당 인덱스의 문자를 출력하도록 했다.

s.length / 2 가 많이 사용되니 따로 변수처리 하는 것이 좀 더 깔끔할 것 같다.

 

 

String.substring() ver.

<script>
    function solution(s) {
        let answer = "";
        let mid = Math.floor(s.length / 2);

        if (s.length % 2) answer = s.substring(mid, mid + 1);
        else answer = s.substring(mid - 1, mid + 1);

        return answer;
    }
    console.log(solution("study"));
</script>

 

 

String.substr() ver.

<script>
    function solution(s) {
        let answer = "";
        let mid = Math.floor(s.length / 2);

        if (s.length % 2) answer = s.substr(mid, 1);
        else answer = s.substr(mid - 1, 2);

        return answer;
    }
    console.log(solution("good"));
</script>

 

 

 

 

 

'Algorithm > JavaScript' 카테고리의 다른 글

[basics] 중복 단어 제거  (0) 2021.12.06
[basics] 중복 문자 제거  (0) 2021.12.06
[basics] 대소문자 변환  (0) 2021.12.06
[basics] 가장 긴 문자열  (0) 2021.12.06
[basics] 대문자 통일  (0) 2021.12.05

댓글