본문 바로가기
Coding Test

231016 가운데 글자 가져오기 - Level 1

by mmm- 2023. 10. 16.

문제 설명

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

제한사항

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

 

입출력 예

 


코드

def solution(s):
    answer = ''
    s_list = list(s)
    
    if len(s)%2 == 0:
        answer = s_list[len(s)//2-1]
    answer += s_list[(len(s))//2] 
    
    return answer

 

풀이

s를 list로 변환한다. s의 길이를 2로 나누었을 때 0이라면 짝수인 것이므로 s_list[]의 첫번째 중간 값을 가져오기 위해 s의 길이를 2로 나눈 후 -1을 해준 자릿수의 값을 가져온다. 그리고 두 번째 중간 값을 가져오는 방법은 홀수와 짝수 같기 때문에 공통적으로 발생해야하는 부분이다. 그러므로 if문이 끝나면 s의 길이를 2로 나눈 자릿수의 값을 가져와 answer 변수에 추가해준다.


다른 코드와 풀이

아래의 코드는 다른 사람들이 작성한 것들로, 내 코드와 비교, 참고하기 위해 가져왔다.

def string_middle(str):
    return str[(len(str)-1)//2 : len(str)//2 + 1]

str배열에서 str의 길이를 -1한 값을 2로 나눈 값의 자리부터 str의 길이를 2로 나눠 1을 더한 값 전의 자릿수까지를 리턴한다.


def string_middle(str):
    a = len(str)
    if a % 2 == 0 :
        a = (a-2) / 2
    else :
        a = (a-1) / 2
    return str[int(a) : -int(a)]

str의 길이가 짝수이면 a-2을 2로 나눈 값을, 그것이 아니라면 a-1을 2로 나눈 값을 a에 할당해준다. 그리고 a를 문자열의 앞과 뒤에서 구하여 나온 값을 리턴해준다.

 

-int(a)와 같이 음수로 된 인덱스는 문자열의 끝에서 역순으로 세는 것을 의미