[업무 지식]/Algorithm
[//] 가운데 글자 가져오기
에디터 윤슬
2024. 12. 24. 09:20
링크
https://school.programmers.co.kr/learn/courses/30/lessons/12903
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
정답 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`와 같은 연산은 실수를 반환하므로, 문자열의 특정 문자에 접근하려는 시도에서 오류가 발생합니다.
- `//` 연산자를 사용하여 정수 나눗셈을 수행하거나, 명시적으로 정수형으로 변환해야 합니다.