단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
s | return |
---|---|
"abcde" | "c" |
"qwer" | "we" |
def solution(s):
return s[(len(s) - 1) // 2 : len(s) // 2 + 1]
이 문제는 s의 길이에 따라 출력할 문자열의 index가 결정되므로, s를 적절하게 슬라이싱하면 간단하게 풀리는 문제입니다. 문제가 복잡하지 않기 때문에 단순히 여러 케이스들을 나열해서 패턴을 찾고 코드를 작성하시면 됩니다.
s | len(s) | 첫 index | 마지막 index |
---|---|---|---|
"0" | 1 | 0 | 0 |
"012" | 3 | 1 | 1 |
"01234" | 5 | 2 | 2 |
s | len(s) | 첫 index | 마지막 index |
---|---|---|---|
"01" | 2 | 0 | 1 |
"0123" | 4 | 1 | 2 |
"012345" | 6 | 2 | 3 |
길이가 홀수인 경우에는 시작과 마지막 index가len(s)//2
혹은 (len(s)-1)//2
가 될 수 있습니다. 그러나 짝수인 경우까지 고려하면 첫 index는 (len(s)-1)//2
로 설정해야 합니다. 마지막 index는 두 경우 모두 len(s)//2
입니다.
따라서, s[(len(s) - 1) // 2 : len(s) // 2 + 1]
를 반환하면 됩니다.
참고로 ":" 오른쪽에 1을 더한 것은 문자열 slicing의 작동방식 때문이다.
print("01234"[1:3]) # 문자열 12 출력
질문이나 오류 수정은 댓글로 남겨주세요!