본문 바로가기
Algorithm/Programmers

[Programmers] 가운데 글자 가져오기(JavaScript)

by 백승전 2022. 7. 26.

 

알림

 

본 포스팅은 공부 목적으로 작성된 글이며 상업적 목적으로 절대 사용되지 않았음을 밝힙니다.

 

문제

 

https://school.programmers.co.kr/learn/courses/30/lessons/12903

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

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

 

코드

 

function solution(s) {
    return s.length % 2 !== 0
    ? s[Math.floor(s.length / 2)]
    : s.slice(s.length / 2 - 1, s.length / 2 + 1)
}

 

풀이

 

배열의 개수가 짝수인지 홀수인지 판별하는 게 우선 순위입니다.

배열의 개수가 2로 나눴을 때 나머지가 0이 아니라면 홀수일 거고, 0이라면 짝수일 텐데요.

 

조건문을 활용하여 짝수와 홀수를 판별하고, 홀수라면 배열의 길이를 2로 나눠주며, 같거나 작은 수 중 가장 큰 정수를 반환하는 Math.floor에 담아 소숫점 이하는 버려주도록 합니다.

 

예를 들어 배열의 개수가 5개면, 배열의 인덱스 번호가 2인 애가 문제에서 찾는 가운데 글자일 텐데요.

5 / 2 = 2.5이고, Math.floor(2.5)는 2를 반환할 테니 홀수일 땐 다음과 같이 결과값을 도출할 수 있습니다.

 

반대로 짝수일 때는 가운데 문자를 구할 수 없기 때문에 가운데 양 옆으로 두 개의 문자를 구해야 하는데요.

이럴 땐 slice 함수를 사용하면 됩니다.

 

slice 함수는 다음과 같이 사용이 가능한데요.

 

var arr = [0, 1, 2, 3, 4, 5];
return arr.slice(1, 4);
// [1, 2, 3]

 

따라서 배열을 2로 나눴을 때, 그 자리에서 왼쪽으로 한 칸부터, 오른쪽으로 한 칸까지 리턴하면 됩니다.

댓글