코드카타_260119

3eo·2026년 1월 19일

1. 문제 링크 :

https://school.programmers.co.kr/learn/courses/30/lessons/12903
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

2. 정답 코드 :

3. 오류 상황 :

def solution(s): 
	a = len(s) 
    if a%2 != 0: 
    	return ???
    else: 
    	return ???

가운데 글자를 반환하는 방법을 잘 알지 못함

4. 해결 방법 :

  1. 문자열의 길이를 구한다.
  2. 그 길이가 홀수인지 짝수인지 판단한다.
  3. 홀수라면
    가운데 인덱스 하나를 계산한다.
    그 인덱스의 문자 하나를 반환한다.
  4. 짝수라면
    가운데에 해당하는 두 인덱스 범위를 계산한다.
    슬라이싱으로 두 글자를 반환한다.
  • 문자열의 길이를 구하는 함수 : len()
  • 연속된 여러 글자를 한 번에 가져오는 방법 : 슬라이싱
    • 문자열[start : end]

※ 슬라이싱에서 end는 포함되지 않는다.
※ 인덱스는 0부터 시작이다.

e.g. 길이가 5인 문자열의 가운데 인덱스는 몇일까?(홀수)

인덱스:  0  1  2  3  4
문자:    a  b  c  d  e

👉 가운데는 2

이걸 숫자로 표현하면

전체 길이 ÷ 2 = 5 ÷ 2 = 2.5

인덱스는 정수여야 하니까 👉 버린다

  • 나눠서 몫만 남기는 연산자 : 전체길이 // 2
    ▶인덱스
  • 해당 인덱스의 문자 하나를 반환 :
    ⭐⭐문자열[인덱스]⭐⭐

e.g. 길이가 4라면? (짝수)

인덱스:  0  1  2  3
문자:    q  w  e  r

가운데 두 글자는 1번, 2번
👉 즉, 두 인덱스는 (전체길이 // 2) - 1, (전체길이 // 2)

이 두 인덱스에 대해서 슬라이싱한다. end 값은 포함되지 않기 때문에 (전체길이//2)+1로 지정해줘야 한다.

def solution(s):
    a = len(s)
    if a%2 != 0:
        return s[a//2]
    else:
        return s[a//2-1:a//2+1]

5. 회고

  • 코드를 작성하기 전에 짜임새 흐름을 먼저 스케치하기
  • 코드 한 줄을 쓸 때마다 '이 줄이 끝났을 때,
    남는 건 숫자인가? 문자열인가? 리스트인가?'를 생각하기
  • 인덱스를 계산했다? → 그 숫자는 무조건 대괄호 안으로 들어간다

0개의 댓글