본문 바로가기

코딩테스트

Level1_가운데 글자 가져오기

문제설명

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

제한사항

  • s는 길이가 1 이상, 100이하인 스트링입니다.

입출력 예

풀이

  1. 글자수가 홀수일 경우와 짝수인 경우를 나눈다.

if(length % 2 !== 0){
   // 홀수일 경우 
} else { 
   // 짝수일 경우 
}

 

2. 가운데 글자의 인덱스를 구한다.

  • 글자수가 홀수일 경우
    'abcde' 에서 가운데 글자는 3번째 글자인 'c'이지만 index는 2이다. length 5를 2로 나누면 2.5가 되고 내림을 해주면 2가 되면서 index랑 같아진다.

  • 글자수가 짝수일 경우
    'qwer' 에서 가운데 글자는 2번째와 3번째 글자인 'w','e' 이고, index는 1, 2 이다. length 4를 2로 나누면 2가 되면 3번째 글자의 인덱스가 나오고 1을 빼주면 2번째 글자의 index와 같아진다. 

const index = Math.floor(s.length / 2);

 

 

3. index에 맞는 글자를 반환해 주는 메소드

  • 처음에 생각한 메소드는 charAt() 였는데, 홀수일 때는 상관 없지만, 짝수일 때는 문자열을 2개를 반환해야 하기 때문에 실패!
  • '자바스크립트 string 메소드'를 검색해서 문자열을 추출해주는 메소드를 찾았다.
  • String.slice(startIndex, endIndex)
    - 첫 번째 인자로 전달된 startIndex부터 시작하여 두 번째 인자로 전달된 endIndex앞까지의 새 문자열을 반환
    - 매개변수가 음수이면 문자열 끝에서부터 계산된다.
    ** endIndex의 문자는 포함되지 않는다.
  • String.substring(startIndex, endIndex)
    - slice()와 비슷하지만 음수를 허용하지 않는다.
    ** endIndex의 문자는 포함되지 않는다.
function solution(s) {
    const index = Math.floor(s.length / 2);
    
    if(s.length % 2 !== 0){
        return s.substring(index, index + 1);
    } else {
        return s.substring(index - 1,index + 1);
    }
}

 

  • String.substr(startIndex, 문자개수)
    - startIndex부터 시작해서 두 번째 인자로 넘겨준 문자 개수만큼 문자열을 반환해 준다.
    - 첫 번째 매개 변수가 음수이면 문자 끝에서부터 계산된다.
    **startIndex의 문자는 문자개수에 포함된다.
function solution(s) {
    const index = Math.floor(s.length / 2);
    
    if(s.length % 2 !== 0){
        return s.substr(index, 1);
    } else {
        return s.substr(index - 1, 2);
    }
}

 

 

'코딩테스트' 카테고리의 다른 글

Level1_비밀지도  (0) 2020.09.03
Level1_가장 큰 수  (0) 2020.08.31
Level1_K번째 수  (0) 2020.06.16
Level1_완주하지 못한 선수  (0) 2020.06.09
Level1_약수의 합  (0) 2020.06.09