본문 바로가기
Algorithm/JavaScript

[javaScript]가운데 글자 가져오기

by dev_mac-_- 2018. 10. 13.

* Programmers 코딩테스트 연습 :  완주하지 못한 선수

문제


단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요.

단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.


문제풀이


* JavaScript 언어로 구현했습니다.

이 문제는 level 1에 속하는 가장 기본적인 문제다.

JavaScript로 알고리즘을 해결하면서 문제해결하는 능력을 연습하지만, javaScript의 다양한 함수를 잘 활용하려고 진행하는 이유도 있다.


사실 이번문제도 간단하게 풀었는데, 다른분들의 풀이에서 더 좋은 코드를 발견했다.

1
2
3
4
5
6
7
8
9
10
11
12
function solution(s) {
    let result = '';
 
    if (s.length%2 === 0) {
        result += s[s.length / 2 - 1];
        result += s[s.length / 2];
    } else {
        result += s[parseInt(s.length / 2)];
    }
 
    return result;
}
cs

내가 작성한 코드는 이건데 뭔가 마음에 안들었다.


1
2
3
function solution(s) {
    return s.substr(Math.ceil(s.length / 2- 1, s.length % 2 === 0 ? 2 : 1);
}
cs

이 코드는 다른 분들이 작성한 코드 중에서 가장 좋아요를 많이 받은 코드다. 한번봐도 간단하다.

사실 substr이라는 함수는 처음보는 함수다. 


MDN에 검색해보니 substr()에 대한 이슈가 있는 것 같다. 

경고문에 "not strictly deprecated as in removed from the Web standars" 즉, 엄밀히 웹 표준에서 사라지지는 않지만

그리고 밑 글에 "Programmers should not use or assume the existence of these features and behaviours when writing new ECMAScript code."라고 한다. 프로그래머는 새로운 ECMA 스크립트 코드를 쓸때 이 기능과 동작을 쓰지 않는 것이 좋다고 한다.

링크

댓글