공백 하나로 구분된 여러 영어 단어로 이루어진 문장 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)입니다. 문장 길이에 관계없이 효율적으로 동작하므로 실무에서도 유용하게 활용할 수 있습니다.