이 글에서는 아래와 같은 문제 상황에 대한 해결 방법을 알아보겠습니다.
문제 정의
주어진 문자열에서 특정 인덱스(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()을 활용해 새로운 문자열을 만드는 방식으로 해결해야 한다는 점을 기억하시면 좋습니다.