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

파이썬(Python)으로 문자열에서 n번째 문자 제거하기 – 슬라이싱 활용법

이 글에서는 파이썬에서 문자열에 포함된 특정 위치(i번째 인덱스)의 문자를 제거하는 방법을 알아보겠습니다.

문제 정의

문제: 하나의 문자열이 주어졌을 때, 해당 문자열에서 i번째 인덱스에 있는 문자를 제거한 뒤 그 결과를 출력해야 합니다.

파이썬에서 문자열의 인덱싱은 항상 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

즉, 첫 번째 문자 'T'는 0번 인덱스를 가지며, 마지막 문자 't'는 13번 인덱스를 가집니다.

해결 방법: 문자열 슬라이싱

파이썬의 문자열은 불변(immutable) 자료형이기 때문에 특정 문자를 직접 삭제할 수 없습니다. 대신 슬라이싱(slicing)을 활용하여 해당 문자 앞부분과 뒷부분을 잘라낸 후 다시 이어 붙이는 방식으로 문제를 해결할 수 있습니다.

예제 코드

def remove(string, i):
    # 0번째부터 i번째 인덱스 직전까지 슬라이싱
    a = string[:i]
    # i+1번째 인덱스부터 끝까지 슬라이싱
    b = string[i + 1:]
    # 두 부분을 합쳐서 반환
    return a + b

# 실행 코드
if __name__ == '__main__':
    string = "Tutorialspoint"
    # 제거할 문자의 인덱스 지정
    i = 8
    print(remove(string, i))

실행 결과

Tutorialpoint

위 코드에서는 8번 인덱스에 있는 문자 's'가 제거되어 "Tutorialpoint"가 출력됩니다.

알고리즘 설명

전체 알고리즘은 다음과 같이 정리할 수 있습니다.

  1. 입력받은 문자열에서 제거할 i번째 인덱스를 확인합니다.
  2. 문자열을 두 부분으로 나눕니다 — i번째 문자 앞부분(string[:i])과 뒷부분(string[i+1:])입니다.
  3. i번째 문자는 두 조각 사이에서 자연스럽게 제외됩니다.
  4. 앞부분과 뒷부분을 연결(concatenate)한 새로운 문자열을 반환합니다.

이 방식의 시간 복잡도는 O(n)으로, 문자열의 길이에 비례하며 매우 효율적입니다.

다른 방법: join() 함수 활용

슬라이싱 외에도 join()enumerate()를 조합하면 다음과 같이 구현할 수 있습니다.

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

print(remove("Tutorialspoint", 8))  # 출력: Tutorialpoint

두 방법 모두 원본 문자열은 그대로 유지되며, 새로운 문자열이 생성된다는 점에서 파이썬 문자열의 불변성 특성을 잘 보여줍니다.

마무리

이번 글에서는 파이썬 3.x 환경에서 주어진 문자열에서 i번째 인덱스의 문자를 제거하는 방법을 배웠습니다. 핵심은 문자열이 수정 불가능한 자료형이라는 점을 이해하고, 슬라이싱 또는 join()을 통해 새로운 문자열을 만드는 것입니다. 이 기법은 문자열 전처리, 데이터 클렌징 등 실무에서도 자주 활용되니 꼭 익혀두시길 바랍니다.