[Programmers] 가운데 글자 가져오기 - JS

devMag 개발 블로그·2022년 1월 15일
0

프로그래머스 문제 링크

문제 설명

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

제한 사항

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

입출력 예시

sreturn
"abcde""c"
"qwer""we



나의 풀이

function solution(s) {
    let answer = '';
    let len = s.length;
    let list = s.split("")
    
    len % 2 === 0
        ? answer = list[len / 2 - 1] + list[len / 2]
        : answer = list[len / 2 - 1/2]
    
    return answer
}

들어오는 문자열의 길이가 짝수냐 홀수냐에 따라 결과물을 달리 내놓으면 된다고 생각했다.

  1. 들어오는 문자열의 길이를 알아낸다.
  2. 문자열을 .split() 메서드를 이용해서 하나씩 배열에 담는다.
    ex. "list".split("") -> ["l","i","s","t"]
  3. 문자열의 길이가 짝수냐 홀수냐에 따라 구분하기 위해서 2로 나눈 값이 0인지 아닌지를 이용한다.
  4. 가운데 숫자를 갖고와야하므로 길이에 나누기 2를 해서 배열 인덱스를 지정하는 방식으로 추출했다.
    • 짝수면 길이 / 2 한 인덱스와 길이 / 2 - 1 한 인덱스가 필요
    • 홀수면 길이 / 2 - 1/2 한 인덱스 필요

다른 풀이

function solution(s) {
    return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);
}
  • .substr(시작 위치, 자를 길이)
    • 해당하는 문자열을 일정부분을 잘라내는 메서드.
  • Math.ceil(s.length / 2) - 1
    • substr() 메서드가 시작하는 위치. 들어온 문자열 길이를 반으로 나누고 올림 후 - 1을 해준다.
  • s.length % 2 === 0 ? 2 : 1
    • substr() 메서드의 자를 길이. 들어온 문자열의 길이를 2로 나눴을 때 나머지가 0이면 2, 아니면 1

substr()
Math.ceil()

profile
최근 공부 내용 정리 Notion Link : https://western-hub-b8a.notion.site/Study-5f096d07f23b4676a294b2a2c62151b7

0개의 댓글

관련 채용 정보