링크: https://school.programmers.co.kr/learn/courses/30/lessons/12951
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
s | return |
---|---|
"3people unFollowed me" | "3people Unfollowed Me" |
"for the last week" | "For The Last Week" |
문제 이해하기:
JadenCase: 모든 단어의 첫 문자가 대문자이고, 그 이의 알파벳은 소문자인 문자열. 단, 첫 문자가 알파벳이 아니라면 이어지는 알파벳은 소문자로 쓴다.
목표: 문자열 s
를 JadenCase로 변환해서 return
내 풀이:
코드
def solution(s):
answer = ''
# 단어를 각각 분리해서 리스트로 저장
words = s.split()
# 분리한 단어들에 대해 반복문을 돌면서
for i in range(len(words)):
# 먼저, 전체 단어를 소문자로 바꿔준 후
word = words[i].lower()
# 첫 번째 단어를 바꾸기 위해 first_word 라는 변수명에 저장
first_word = word[0]
# first_word가 알파벳인 경우 대문자로 변환 후 answer에 추가
if first_word.isalpha():
answer += word.replace(first_word, first_word.upper(), 1)
# 그리고 단어가 미자막 단어가 아닌 경우 공백을 추가
if i != len(words)-1:
answer += ' '
# first_word가 알파벳인 아닌 경우 그대로 answer에 추가하고, 마찬가지로 마지막 단어가 아니라면 공백도 추가
else:
answer += word
if i != len(words)-1:
answer += ' '
return answer
두 번째 풀이:
def solution(s):
answer = []
# 띄어쓰기가 한 칸 이상인 경우를 고려하여 공백을 기준으로 분리해서 리스트로 저장
words = s.split(' ')
# words의 각 요소들에 for문을 돌면서
for word in words:
if word: # 단어가 비어있지 않다면 첫 단어를 대문자로 바꾼 후 뒤에 단어들은 소문자로 바꿔 answer에 추가
answer.append(word[0].upper() + word[1:].lower())
else: # 단어가 비어있다면 그대로 answer에 추가
answer.append(word)
# 마지막으로 모든 단어들을 공백을 사이에 두고 다시 결합하여 return
return ' '.join(answer)