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

파이썬으로 문장을 자르고 처음 k개의 단어만 추출하는 프로그램

공백 하나로 구분된 여러 영어 단어로 이루어진 문장 s가 있다고 가정해 봅시다. 문장 앞뒤에는 불필요한 공백이 없으며, 추가로 정수 값 k도 주어집니다. 우리가 해야 할 일은 이 문장을 잘라내어 처음 k개의 단어만 추출해 반환하는 것입니다.

문제 예시

예를 들어 입력이 다음과 같다고 해보겠습니다.

  • s = "Coding challenges are really helpful for students"
  • k = 5

이 경우 출력 결과는 다음과 같습니다.

Coding challenges are really helpful

해결 접근 방법

이 문제는 파이썬의 문자열 처리 기능을 활용하면 매우 간단하게 해결할 수 있습니다. 해결 과정은 다음과 같습니다.

  • 먼저 split() 메서드를 사용해 문장 s를 공백을 기준으로 분리하여 단어 리스트를 만듭니다.
  • 슬라이싱([:k])을 통해 리스트에서 처음 k개의 단어만 가져옵니다.
  • join() 메서드로 해당 단어들을 공백으로 연결한 뒤 결과를 반환합니다.

구현 코드

아래 코드를 통해 더 자세히 이해해 보겠습니다.

def solve(s, k):
    words = s.split()
    return " ".join(words[:k])

s = "Coding challenges are really helpful for students"
k = 5
print(solve(s, k))

입력

"Coding challenges are really helpful for students", 5

출력

Coding challenges are really helpful

코드 설명

s.split()은 인자 없이 호출될 경우 연속된 공백을 모두 처리하고 문장 앞뒤의 공백도 자동으로 제거하므로, 본 문제의 조건과 완벽하게 일치합니다. 이후 words[:k] 슬라이싱으로 앞에서부터 k개의 단어를 선택하고, " ".join()으로 다시 하나의 문장 형태로 합칩니다.

이 알고리즘의 시간 복잡도는 O(n)이며(n은 문장의 길이), 공간 복잡도 역시 단어 리스트 저장을 위해 O(n)입니다. 문장 길이에 관계없이 효율적으로 동작하므로 실무에서도 유용하게 활용할 수 있습니다.