JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
s | retrurn |
---|---|
"3people unFollowed me" | "3people Unfollowed Me" |
"for the last week" | "For The Last Week" |
첫 문자가 알파벳인지 검사해서 맞다면 대문자+소문자형식으로, 아니라면 모두 소문자 형식으로 추가하려고 했다. 그러나 런타임에러가 뜨고 마는데...
찾아보니 조건 하나를 무시했던 거였다 🤔
split(' ')
형식으로 나눠줘야 한다. 그냥 split()
만 쓰면 안됨upper()
를 해도 숫자이므로 그냥 함수 적용해도 된다.def solution(s):
answer = ''
s = s.split(' ')
for i in range(len(s)):
if s[i]:
s[i] = s[i][0].upper() + s[i][1:].lower()
else:
answer += ' '
return ' '.join(s)
정답코드는 이거라고 한다.
def solution(s):
answer = ''
s = s.split(' ')
for i in range(len(s)):
s[i]=s[i].capitalize()
answer=' '.join(s)
return answer
capitalize()
의 경우 공백도 알아서 걸러주나보다.
첫 글자 대문자 + 나머지 소문자를 알아서 해주는 편리한 함수
테스트 1 〉 통과 (0.01ms, 10.2MB)
테스트 2 〉 통과 (0.01ms, 10.3MB)
테스트 3 〉 통과 (0.01ms, 10.2MB)
테스트 4 〉 통과 (0.01ms, 10.4MB)
테스트 5 〉 통과 (0.02ms, 10.3MB)
테스트 6 〉 통과 (0.01ms, 10.3MB)
테스트 7 〉 통과 (0.02ms, 10.3MB)
테스트 8 〉 통과 (0.01ms, 10.4MB)
테스트 9 〉 통과 (0.01ms, 10.3MB)
테스트 10 〉 통과 (0.01ms, 10.4MB)
테스트 11 〉 통과 (0.01ms, 10.4MB)
테스트 12 〉 통과 (0.01ms, 10.2MB)
테스트 13 〉 통과 (0.01ms, 10.3MB)
테스트 14 〉 통과 (0.01ms, 10.2MB)
테스트 15 〉 통과 (0.01ms, 10.2MB)
테스트 16 〉 통과 (0.01ms, 10.3MB)
테스트 17 〉 통과 (0.01ms, 10.3MB)
테스트 18 〉 통과 (0.01ms, 10.4MB)
capitalize()
의 시간 복잡도는 O(N)이라고 한다.대문자인지 소문자인지 판별
isupper()
upper()
islower()
lower()
문자열인지 숫자인지 판별
isdecimal()
: 어떤 문자열이 int 형으로 변환 가능한가 (0~9)isdigit()
: 어떤 문자열이 숫자의 형태인가 (3²)isnumeric()
: 숫자값 표현에 해당하는 문자열인가 (½)isalpha()
: 주어진 문자열이 알파벳으로만 구성되었는가 (중간에 공백이 있으면 False)isalnum()
: 주어진 문자열이 알파벳+숫자로만 구성되었는가 (중간에 공백이 있으면 False)첫 글자를 대문자로 변환
capitalize()
: 첫 글자만 대문자, 나머지는 소문자title()
: 첫 글자가 아니라도 띄어쓰기/숫자/특수기호/알파벳 이외 문자들을 기준으로 나뉜 모든 첫글자를 대문자로 바꿔줌