Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 문자열에서 n번째 문자 제거하는 방법

이 글에서는 아래와 같은 문제 상황에 대한 해결 방법을 알아보겠습니다.

문제 정의

주어진 문자열에서 특정 인덱스(i번째)에 해당하는 문자를 제거한 뒤, 그 결과를 출력해야 합니다.

Python에서 문자열의 인덱싱은 항상 0부터 시작합니다. 예를 들어 "tutorialspoint"라는 문자열이 있다면 각 문자는 다음과 같이 인덱스가 매겨집니다.

T u t o r i a l s p o i n t
0 1 2 3 4 5 6 7 8 9 10 11 12 13

그럼 이 문제를 해결하는 Python 코드를 살펴보겠습니다.

예제 코드

def remove(string, i):
    # i번째 문자 앞부분까지 슬라이싱
    a = string[ : i]
    # i+1번째 인덱스부터 끝까지 슬라이싱
    b = string[i + 1: ]
    return a + b

# 실행 코드
if __name__ == '__main__':
    string = "Tutorialspoint"
    # n번째 인덱스 요소 제거
    i = 8
    print(remove(string, i))

출력 결과

Tutorialpoint

알고리즘 설명

입력으로 받은 문자열에서 i번째 인덱스의 문자를 제거해야 합니다. 이를 위해 문자열을 두 부분으로 나눕니다.

  • 첫 번째 부분: 제거할 문자 이전까지의 구간 (인덱스 0 ~ i-1)
  • 두 번째 부분: 제거할 문자 다음부터 끝까지의 구간 (인덱스 i+1 ~ 마지막)

이렇게 하면 i번째 문자만 자연스럽게 건너뛰게 되며, 두 부분을 다시 합쳐서 반환하면 원하는 결과를 얻을 수 있습니다.

위 코드에서는 전역 범위에 세 개의 변수가 선언되어 사용됩니다.

  • string: 대상이 되는 입력 문자열
  • i: 제거하고자 하는 문자의 인덱스
  • a, b: 슬라이싱으로 나뉜 두 부분 문자열

대체 방법: join과 enumerate 활용

슬라이싱 외에도 enumerate()join()을 조합하면 더 간결하게 표현할 수 있습니다.

def remove(string, i):
    return ''.join(ch for idx, ch in enumerate(string) if idx != i)

이 방식은 가독성이 좋고, 조건을 쉽게 확장할 수 있다는 장점이 있습니다.

마무리

이번 글에서는 Python 3.x 환경에서 주어진 문자열에서 i번째 문자를 제거하는 방법을 배웠습니다. 문자열은 불변(immutable) 자료형이기 때문에 직접 수정할 수 없으며, 슬라이싱이나 join()을 활용해 새로운 문자열을 만드는 방식으로 해결해야 한다는 점을 기억하시면 좋습니다.