
단어 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 출력
질문이나 오류 수정은 댓글로 남겨주세요!