문제 설명
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
- s는 길이 1 이상 200 이하인 문자열입니다.
- s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
- 숫자는 단어의 첫 문자로만 나옵니다.
- 숫자로만 이루어진 단어는 없습니다.
- 공백문자가 연속해서 나올 수 있습니다.
입출력 예
s | return |
"3people unFollowed me" | "3people Unfollowed Me" |
"for the last week" | "For The Last Week" |
"Tree a b " | "Tree A B " |
풀이
위 문제는 띄어쓰기가 있을 때 결과값에서도 해당 칸 수만큼의 띄어쓰기를 유지해야 한다.
def solution(s):
# 공백을 기준으로 맨 앞글자 대문자
s_list = s.split(' ')
answer = []
for s in s_list:
if s == "": #issue: 공백 여러 개일 때 어떻게 처리
answer.append('')
else:
answer.append(s.capitalize())
return ' '.join(answer)
capitalize() 함수는 아래와 같이 list의 각 item에 대해 적용되지 않고, 새로운 list를 선언해서 append하는 식으로 사용해야한다.
s= "abc rgf ewq"
s_list = s.split(' ')
for s in s_list:
s.capitalize()
print(s_list) # 출력 결과: ['abc', 'rgf', 'ewq']
list comprehension을 통해서 한 줄로도 표현 가능하다
s= "abc rgf ewq"
s_list = s.split(' ')
print([s.capitalize() for s in s_list]) # 출력 결과: ['Abc', 'Rgf', 'Ewq']
위 문제에서 list comprehension을 사용했다면 아래와 같다
def solution(s):
return ' '.join([word.capitalize() for word in s.split(" ")])
📝
split을 적용하면 list가 생성된다. split에 파라미터를 적용하지 않으면 띄어쓰기와 엔터로 구분된다.
s = "A B C DE "
s = s.split() # 띄어쓰기, 엔터 구분
print(s) # ['A', 'B', 'C', 'DE']
s2 = "A B C DE " # 띄어쓰기 한 칸만 구분
s2 = s2.split(" ")
print(s2) # ['A', '', 'B', 'C', 'DE', '']
# A와 B 사이의 띄어쓰기가 두 칸이었음
Split과 Join 함수
s = ['A', '', 'B', 'C', 'DE', '']
# s를 "A BC DE "의 string으로 만들고 싶음
answer = ' '.join(s)
print(answer) # A B C DE
print(answer.split(' ')) # ['A', '', 'B', 'C', 'DE', '']
📝
s.upper() 모든 문자를 대문자로 변환시킨다
s.lower() 모든 문자를 소문자로 변환시킨다
s.capitalize() 문자의 맨 앞글자만 대문자로 변환시킨다
s.title() 알파벳 외의 문자(숫자, 특수기호, 띄어쓰기 등)로 나누어져 있는 영단어들의 첫 글자를 모두 대문자로 변환시킨다
ex = 'abcd'
print(ex.capitalize()) # Abcd 동일
print(ex.title()) # Abcd
ex2 = 'aAbB'
print(ex2.capitalize()) # Aabb 동일
print(ex2.title()) # Aabb
ex3 = 'a2b3c4'
print(ex3.capitalize()) # A2b3c4 다름
print(ex3.title()) # A2B3C4
ex4 = 'abc-def gh'
print(ex4.capitalize()) # Abc-def gh 다름
print(ex4.title()) # Abc-Def Gh
'코테 공부 > 프로그래머스' 카테고리의 다른 글
[Python] 후보키 ** (0) | 2022.10.17 |
---|---|
[Python] 프렌즈4블록 (0) | 2022.10.10 |
[Python] 이상한 문자 만들기 (쉬움) (0) | 2022.09.06 |
[Python] 삼각 달팽이 (0) | 2022.08.19 |
[Python/스택,큐] 프린터(어려움) (0) | 2022.08.10 |