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

Python으로 문장의 단어를 오름차순으로 정렬하는 프로그램

문장의 단어를 오름차순으로 정렬하려면 먼저 공백을 기준으로 문장을 단어 단위로 분리해야 합니다. 여기서는 설명의 편의를 위해 공백만 기준으로 분리하고 구두점은 그대로 두겠습니다. 필요하다면 replace() 메서드나 정규표현식(regex)을 활용해 구두점도 함께 제거할 수 있습니다.

정렬 방식: sort() vs sorted()

문장을 단어 리스트로 분리한 후에는 sort() 또는 sorted() 메서드를 사용해 단어들을 사전순(lexicographical order)으로 정렬할 수 있습니다. 두 가지 중 무엇을 사용할지는 원본 배열 자체를 변경할 것인지, 아니면 정렬된 새 배열을 받을 것인지에 따라 달라집니다.

1. 제자리 정렬(In-place Sorting) — sort()

원본 배열이나 리스트 자체의 순서를 직접 변경하면서 정렬하고 싶다면 sort() 메서드를 바로 호출하면 됩니다.

예제

sent = "mary has a very beautiful dog"
my_arr = sent.split(" ")
print(my_arr)
my_arr.sort()
print(my_arr)

실행 결과는 다음과 같습니다 −

['mary', 'has', 'a', 'very', 'beautiful', 'dog']
['a', 'beautiful', 'dog', 'has', 'mary', 'very']

출력에서 볼 수 있듯이 원본 배열인 my_arr 자체가 수정되었습니다.

2. 새 배열 반환 — sorted()

원본 배열은 그대로 유지한 채 정렬된 새 배열을 만들고 싶다면 sorted() 메서드를 사용하세요.

sent = "mary has a very beautiful dog"

# 공백을 기준으로 문장을 분리합니다.
my_arr = sent.split(" ")
print(my_arr)

# sorted() 메서드로 새로운 배열을 생성합니다.
new_arr = sorted(my_arr)
print(new_arr)

# 이번에는 my_arr가 제자리에서 변경되지 않고,
# 정렬된 새 인스턴스가 new_arr에 할당됩니다.
print(my_arr)

출력

실행 결과는 다음과 같습니다 −

['mary', 'has', 'a', 'very', 'beautiful', 'dog']
['a', 'beautiful', 'dog', 'has', 'mary', 'very']
['mary', 'has', 'a', 'very', 'beautiful', 'dog']

두 번째 출력 결과를 보면 new_arr만 정렬되었고, 마지막 출력에서 확인할 수 있듯이 원본 배열 my_arr는 변하지 않고 그대로 유지됩니다. 이처럼 상황에 따라 sort()sorted()를 적절히 선택하면 효율적으로 문장의 단어를 오름차순으로 정렬할 수 있습니다.