99Club
Posts

© 2025. woongsnote All rights reserved.

Beginner
2024-04-11

가운데 글자 가져오기

단어 s의 가운데 글자를 반환하는 함수 구현하기

#99일지#99클럽#TIL#개발자스터디#코딩테스트#항해
직접 풀러가기

문제 설명

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

제한 사항

  • s는 길이가 1 이상, 100이하인 스트링입니다.
sreturn
"abcde""c"
"qwer""we"

풀이

  1. 단어 s의 길이를 구한다. ⇒ s.length
  2. subString을 시작할 index를 구한다.
  3. s의 길이가 짝수라면, 가운데 두 글자를 반환한다. ⇒ s.substring(startIndex-1, startIndex+1)
  4. s의 길이가 홀수라면, 가운데 글자를 반환한다. ⇒ s.substring(startIndex, startIndex +1)
function solution(s) {
    var answer = '';
    let sLength = s.length
    let startIndex = sLength / 2
    answer = sLength % 2 === 0 ? s.substring(startIndex-1, startIndex+1) : s.substring(startIndex, startIndex +1);
    return answer;
}

개선

function solution(s) {
    const midIndex = Math.floor(s.length / 2);
    return s.length % 2 === 0 ? s.substring(midIndex - 1, midIndex + 1) : s[midIndex];
}
  • sLength 변수를 제거하고, 필요한 곳에서 s.length를 직접 사용해서 코드가 더 간결해졌다.
  • startIndex 변수 대신 midIndex를 사용하고, 이를 바로 계산에 활용해서 코드의 가독성을 향상시켰다.
  • 홀수 길이의 문자열에서 가운데 글자를 얻기 위해 substring 대신 단순 인덱싱을 사용하면 substring 메서드 호출보다 간결하고, 의미가 명확하다.

Python

def solution(s):
    mid_index = len(s) // 2
    return s[mid_index -1: mid_index+1] if len(s) % 2 == 0 else s[mid_index]
  • Python은 정수 나누기에 //를 사용한다. 이는 JavaScript에서 Math.floor()를 사용하는 것과 동일하다.
  • Python의 스트링 슬라이싱에는 s[start:end]가 사용되는데, 이는 JavaScript의 s.substring(start, end)와 매우 유사하다.
def solution(s):
    return s[(len(s)-1)//2: len(s)//2 + 1]
  • (len(s)-1)//2는 슬라이스의 시작 인덱스를 계산한다. 홀수 길이 문자열의 경우, 이 수식은 중간 문자로 반내림됩니다. 짝수 길이 문자열의 경우 중간 두 문자 앞의 문자로 반내림된다.
  • len(s)//2 + 1은 슬라이스의 종료 인덱스를 계산한다. 이는 슬라이스가 이 인덱스의 문자를 포함하지 않음을 의미한다. 홀수 길이 문자열의 경우 중간 문자만 포함된다. 짝수 길이 문자열의 경우 중간 두 문자가 포함된다.