Python 대소문자 변경
파이썬에서 알파벳의 대문자/소문자를 변경하는 메소드는 일반적으로 upper()(대문자로 변경) lower()(소문자로 변경) 이 있습니다.
s = 'abcd'
print(s.upper()) #ABCD
print(s.lower()) #abcd
그런데 위와 같이 전체를 변경하는 경우 외에 문자열의 앞글자만 대문자로 하거나, 각 단어마다 대문자로 시작하게 하려면 어떻게 해야할까요?
프로그래머스 - JadenCase 문자열 만들기 문제를 보면서 한번 알아보겠습니다.
프로그래머스 - JadenCase 문자열 만들기
JadenCase문자열이란 문자열에서 각 단어의 첫글자만 대문자이고, 나머지 글자는 소문자인 문자열을 말합니다.
문제에선 숫자. 공백의 경우도 주어지는데, 이 문제는 파이썬의 capitalize() 메소드를 사용해서 해결할 수 있습니다.
capitalize() vs title()
captalize()는 주어지는 문자열에 대해서 가장 앞 글자를 대문자로 만들고, 이외의 글자는 소문자로 만듭니다.
title()이라는 메소드도 있는데, '제목' 이라는 뜻에 걸맞게 가장 앞 글자를 대문자로 바꿔주죠.
s = 'abcd'
print(s.capitalize()) #Abcd
print(s.title()) #Abcd
그럼 두 메소드는 어떤 차이점이 있을까요?
- capitalize() : 가장 앞글자 대문자 + 나머지 글자 소문자. 이때 숫자, 공백, 기호 등은 무시함.
- title() : 공백, 숫자, 기호 등으로 구분되는 첫글자를 모두 대문자로 바꿈 + 나머지 글자 소문자
s = 'abcd-efg opqr3ab'
print(s.capitalize()) #Abcd-efg opqr3ab
print(s.title()) #Abcd-Efg Opqr3Ab
두 메소드 간의 차이가 보이시나요? capitalize()는 입력받는 문자열의 앞글자 만을 바꾸지만, title()은 공백과 기호, 숫자에 따라 구분되는 모든 단어의 첫글자를 변경합니다.
그럼 다시 JadenCase 문제로 돌아가서, 이 문제를 capitalize()를 활용해서 해결해보겠습니다.
capitalize()는 입력받는 전체 문자열의 앞글자 만을 변경한다고 했습니다.
우리는 입력받는 문자열에서 각 단어의 앞글자를 모두 대문자로 만들어야 합니다.
문제 조건에는 공백이 여러개 주어질 수 있고, 숫자는 단어의 첫 글자로만 나온다고 하네요.
capitalize()를 사용하면 공백이나 숫자에 대해선 무시할 수 있으니, 알파벳으로 된 글자들만 변경이 있겠네요?
그리고 모든 단어에 대해서 변경해야 하니, 각 단어에 대해서 capitalize를 각각 적용해줘야 될 것 같습니다.
이때, s.split(' ') 이라는 메소드를 통해서 공백 단위로 문자열을 나눠줄 수 있는데요. 나눠진 문자열은 리스트 형태로 저장됩니다.
그렇게 저장된 단어들에 대해서 반복문을 통해 capitalize()를 적용해주면 되겠죠?
#프로그래머스 JadenCase 문자열 만들기
def solution(s):
s = s.split(' ')
arr = []
for i in s:
new = i.capitalize()
arr.append(new)
return ' '.join(arr)
print(solution("3people unFollowed me")) #3people Unfollowed Me
print(solution("for the last week")) #For The Last Week
위와 같이 해결할 수 있습니다.
'개발바닥' 카테고리의 다른 글
[React] #2. useEffect를 이용해 Life Cycle 제어하기 (1) | 2023.11.24 |
---|---|
시간복잡도란? (Big O 표기법) (0) | 2023.08.02 |
[React] 개발 환경 설정 (0) | 2023.07.31 |
백준 Node Js 입력 방법 (0) | 2023.07.26 |