영어 소문자로 이루어진 문장이 주어졌을 때, 각 단어의 첫 글자만 대문자로 바꾸는 문제를 파이썬으로 해결해 보겠습니다.
예를 들어 입력이 s = "i love my country"라면, 출력은 "I Love My Country"가 되어야 합니다.
문제 해결 접근 방식
이 문제는 다음 단계를 따라 해결할 수 있습니다.
- 문장
s를 공백 기준으로 분리하여 단어 리스트를 만듭니다. - 결과를 저장할 빈 리스트를 하나 생성합니다.
- 각 단어에 대해
capitalize()함수를 사용해 첫 글자를 대문자로 변환한 뒤 결과 리스트에 추가합니다. - 결과 리스트의 모든 단어를 공백으로 연결(join)하여 반환합니다.
구현 예제
아래 코드를 통해 실제 동작을 확인해 보겠습니다.
def solve(s):
words = s.split(' ')
ret = []
for i in words:
ret.append(i.capitalize())
return ' '.join(ret)
s = "i love my country"
print(solve(s))입력
"i love my country"
출력
I Love My Country
코드 설명
s.split(' '): 문장을 공백 문자를 기준으로 나누어['i', 'love', 'my', 'country']형태의 리스트를 반환합니다.i.capitalize(): 단어의 첫 글자를 대문자로, 나머지 글자는 소문자로 변환합니다. 예를 들어'i'는'I'가 됩니다.' '.join(ret): 리스트에 담긴 단어들을 공백 한 칸씩 두고 하나의 문자열로 합칩니다.
참고: 더 간단한 방법
리스트 컴프리헨션(list comprehension)을 활용하면 위 코드를 한 줄로 줄일 수 있습니다.
def solve(s):
return ' '.join(word.capitalize() for word in s.split(' '))또한 파이썬 내장 메서드인 str.title()을 사용하면 비슷한 결과를 얻을 수 있지만, title()은 아포스트로피가 포함된 단어(예: don't → Don'T)에서 의도와 다르게 동작할 수 있으므로 주의가 필요합니다. 각 단어의 첫 글자만 정확히 대문자로 바꾸려면 capitalize()를 사용하는 방식이 가장 안전합니다.