프론트엔드/프로그래머스
프로그래머스 - 가운데 글자 가져오기
0-SIK
2024. 3. 27. 11:30
728x90
문제
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
정답
function solution(s) {
const arr = s.split("")
const num = Math.floor(s.length / 2)
if(s.length % 2 === 0) {
const evenArr = [arr[num - 1], arr[num]]
return evenArr.join("")
} else {
return arr[num]
}
}
- solution 함수는 문자열 s를 매개변수로 받습니다.
- const arr = s.split("")를 사용하여 문자열 s를 배열로 변환합니다. 이 배열은 문자열의 각 글자를 요소로 갖습니다.
- const num = Math.floor(s.length / 2)를 사용하여 문자열의 가운데 인덱스를 찾습니다. 만약 문자열의 길이가 홀수라면 정확히 가운데에 위치한 인덱스를, 짝수라면 가운데 두 글자의 시작 인덱스를 찾습니다.
- if(s.length % 2 === 0)를 사용하여 문자열의 길이가 짝수인지 홀수인지 확인합니다. 짝수일 경우에는 가운데 두 글자를 반환해야 합니다.
- 만약 짝수일 경우, evenArr 배열에 가운데 두 글자를 저장합니다. 이때 arr[num - 1]과 arr[num]을 사용하여 가운데 두 글자를 구합니다.
- return evenArr.join("")를 사용하여 가운데 두 글자를 하나의 문자열로 합쳐 반환합니다.
- 만약 홀수일 경우, arr[num]을 사용하여 가운데 글자를 반환합니다.
- 함수의 실행 결과로 가운데 글자 또는 가운데 두 글자가 반환됩니다.
코드 최적화
function solution(s) {
return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);
}
- solution 함수는 문자열 s를 매개변수로 받습니다.
- Math.ceil(s.length / 2)를 사용하여 문자열의 가운데 인덱스를 찾습니다. 이때 Math.ceil을 사용하여 소수점 이하를 올림하여 정수로 반환합니다. 이는 문자열의 길이가 홀수일 때 가운데 인덱스를 정확히 찾기 위함입니다.
- -1을 사용하여 인덱스가 0부터 시작하도록 보정합니다.
- s.length % 2 === 0 ? 2 : 1를 사용하여 문자열의 길이가 짝수인지 홀수인지 확인합니다. 짝수일 경우에는 가운데 두 글자를 반환해야 하므로 길이가 2를 반환하고, 홀수일 경우에는 가운데 한 글자를 반환해야 하므로 길이가 1을 반환합니다.
- s.substr(start, length)를 사용하여 문자열 s에서 가운데 글자 또는 가운데 두 글자를 추출합니다. start는 가운데 글자의 시작 인덱스이고, length는 추출할 글자의 수입니다.
- return evenArr.join("")를 사용하여 가운데 두 글자를 하나의 문자열로 합쳐 반환합니다.
- 추출한 문자열이 함수의 반환 값으로 반환됩니다.
- 함수의 실행 결과로 가운데 글자 또는 가운데 두 글자가 반환됩니다.
728x90