링크
https://school.programmers.co.kr/learn/courses/30/lessons/12903
문제
정답 1
def solution(s):
idx = len(s) // 2
if len(s) % 2 == 0:
return s[idx-1:idx+1]
else:
return s[idx]
정답 2
def solution(s):
idx = len(s) // 2
return s[idx-1:idx+1] if len(s) % 2 == 0 else s[idx]
새롭게 이해한 내용
- `len(s) / 2`는 Python에서 항상 실수(float)를 반환합니다. 따라서 `idx`는 실수로 저장되며, 문자열 슬라이싱이나 인덱싱에서 사용될 수 없습니다. Python의 슬라이싱과 인덱싱은 정수(int)만 허용합니다.
- 예를 들어, `len("test") / 2`는 `2.0`이고, 이를 `s1.0:2.0`처럼 사용하려 하면 TypeError가 발생합니다.
- `idx-0.5`와 같은 연산은 실수를 반환하므로, 문자열의 특정 문자에 접근하려는 시도에서 오류가 발생합니다.
- `//` 연산자를 사용하여 정수 나눗셈을 수행하거나, 명시적으로 정수형으로 변환해야 합니다.
'[업무 지식] > Algorithm' 카테고리의 다른 글
[zip] 내적 (0) | 2024.12.26 |
---|---|
[문자 패턴] 수박수박수박수? (1) | 2024.12.24 |
[remove] 제일 작은 수 제거하기 (0) | 2024.12.23 |
[list comprehension] 음양 더하기 (0) | 2024.12.19 |
[filter] 나누어 떨어지는 숫자 배열 (0) | 2024.12.19 |