728x90

문제 설명

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

재한사항
  • s는 길이가 1 이상, 100이하인 스트링입니다.
입출력 예sreturn
"abcde" "c"
"qwer" "we"

 

1. 나의 코딩

def solution(s):
    if len(s) % 2 == 1:
        return s[len(s)//2]
    else:
        return s[(len(s)//2 -1) : len(s)//2 +1]

2. 한줄코딩

def solution(s):
    return s[(len(s)-1)//2:len(s)//2+1]

① 전체 길이가 짝수인 경우 길이를 2n이라고 했을 때 2n//2 = n

 전체 길이가 홀수인 경우 길이를 2n+1이라고 했을 때 (2n+1)//2 = n+ 0.5 = n

홀수인 경우 전체 길이에서 -1을 하게 되면 2로 나눈 몫이 n으로 -1을 했을 때와 안 했을 때 같은 몫을 가지고

짝수인 경우에는 몫이 n-0.5 = (n-1)+0.5로 (전체 길이-1)를 수행했을 때 다른 몫을 가지는 것을 확인할 수 있다. 즉, 각각의 몫은 다음과 같다

① 짝수 : n-1 , n

② 홀수 : n, n

그럼 이 부분에서 두 번째 몫에 +1만 해주고 인덱스로 활용한다면 짝수는 2개의 문자를 홀수는 1개의 문자를 얻을 수 있을 것이다. 결국 문제에서 원하는 문자의 개수를 만족시키게 되며 2로 나누는 과정을 통해 자연스럽게 가운데 문자를 뽑아내게 된다.

 

따라서 입력받은 문자 전체 길이 len(s)에 -1을 수행한 값과 len(s)의 값을 2로 나눈 몫을 활용하여 슬라이싱을 진행한 결과 짝수 홀수 조건을 나누지 않고 원하는 결과를 얻을 수 있었다.

728x90

+ Recent posts