문자열이 주어졌을 때 문자열 속 모든 공백을 맨 앞으로 이동시키는 것이 이 글의 목표입니다. 예를 들어 문자열에 공백이 네 개 포함되어 있다면, 그 네 개의 공백은 나머지 모든 문자보다 앞쪽에 위치해야 합니다. 본격적인 코딩에 앞서 예상되는 입출력 예시부터 살펴보겠습니다.
입력: string = "tutorials point " 출력: "tutorialspoint"
입력: string = "I am a python programmer." 출력: "Iamapythonprogrammer."
※ 실제 출력은 따옴표 없이 표시되며, 문자열 앞에 해당 개수만큼의 공백이 함께 출력됩니다. 콘솔 환경에서는 선행 공백이 눈에 잘 띄지 않으니 참고하세요.
알고리즘
다음 순서대로 진행하면 목표를 달성할 수 있습니다.
- 문자열을 초기화합니다.
- 공백이 아닌 모든 문자를 찾아 별도의 변수에 저장합니다.
- 문자열의
count()메서드로 공백의 개수를 구합니다. - 공백 문자 하나를 공백 개수만큼 곱해 새 문자열의 앞부분을 만듭니다.
- 새 문자열 뒤에 저장해 둔 문자들을 이어 붙입니다.
- 최종 결과를 출력합니다.
예제 코드 1
# 문자열 초기화
string = "tutorials point "
# 공백을 제외한 모든 문자 추출
chars = [char for char in string if char != " "]
# count() 메서드로 공백 개수 계산
spaces_count = string.count(' ')
# 공백 개수만큼 공백을 반복해 새 문자열 생성
new_string = " " * spaces_count
# 새 문자열에 문자들을 이어 붙이기
new_string += "".join(chars)
# 결과 출력
print(new_string)
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다(결과 앞에 공백 두 개가 포함됩니다).
tutorialspoint
예제 코드 2
이번에는 다른 입력값으로 동일한 프로그램을 실행해 보겠습니다.
# 문자열 초기화
string = "I am a python programmer."
# 공백을 제외한 모든 문자 추출
chars = [char for char in string if char != " "]
# count() 메서드로 공백 개수 계산
spaces_count = string.count(' ')
# 공백 개수만큼 공백을 반복해 새 문자열 생성
new_string = " " * spaces_count
# 새 문자열에 문자들을 이어 붙이기
new_string += "".join(chars)
# 결과 출력
print(new_string)
실행 결과
실행 결과는 다음과 같습니다(결과 앞에 공백 세 개가 포함됩니다).
Iamapythonprogrammer.
더 간단한 대안: replace() 활용하기
리스트 컴프리헨션 대신 replace() 메서드를 사용하면 코드를 더욱 간결하게 작성할 수 있습니다.
string = "tutorials point "
no_space = string.replace(" ", "")
space_count = len(string) - len(no_space)
result = " " * space_count + no_space
print(result)
마무리
이번 글에서는 파이썬으로 문자열 내 모든 공백을 앞쪽으로 이동시키는 방법을 알아보았습니다. 각 단계가 문자열을 선형 시간(O(n)) 안에 처리하므로 긴 문자열에서도 효율적으로 동작합니다. 프로그램에 대해 궁금한 점이나 개선 아이디어가 있다면 댓글로 남겨 주세요!