본문 바로가기
[업무 지식]/Algorithm

[//] 가운데 글자 가져오기

by 에디터 윤슬 2024. 12. 24.

링크

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`와 같은 연산은 실수를 반환하므로, 문자열의 특정 문자에 접근하려는 시도에서 오류가 발생합니다.
  • `//` 연산자를 사용하여 정수 나눗셈을 수행하거나, 명시적으로 정수형으로 변환해야 합니다.