JadenCase 문자열 만들기
by Cori문제
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, Solution을 완성해주세요.
제한사항
· s는 길이 1이상인 문자열입니다.
· s는 알파벳과 공백문자(' ')로 이루어져 있습니다.
· 첫 문자가 영문이 아닐 때에는 이어지는 영문은 소문자로 씁니다.
입출력 예
s | return |
'3People unFollowed me' | '3people Unfollowed Me' |
'for the last week' | 'For The Last Week' |
풀이
1. Me
1) 1차 시도
def solution(s):
answer = []
lower_s = s.lower()
split_s = lower_s.split(' ')
print(split_s)
for i in split_s:
if i[0].isalpha():
answer.append(i[0].upper() + i[1:])
else:
answer.append(i)
return ' '.join(answer)
정답은 맞게 출력이 되었지만 런타임에러로 인해 효율성 테스트를 통과하지 못했다.
2) 2차 시도
def solution(s):
answer = ''
lower_s = s.lower()
split_s = lower_s.split(' ')
for i in split_s:
answer += i[0].upper() + i[1:] + ' '
return answer[:-1]
효율성 통과 못한건 마찬가지 .. 다른 방법을 생각해야 한다. -> 공백이 여러 개일 수도 있지 않을까 ? 공백이 여러개인 경우, split_s 배열에도 공백이 들어가게 됨
3) 마지막 시도
def solution(s):
answer = ''
lower_s = s.lower()
split_s = lower_s.split(' ')
for i in split_s:
if i == '':
answer += ' '
continue
answer += i[0].upper() + i[1:] + ' '
return answer[:-1]
앞서 틀렸던 풀이들이, 시간적인 측면에서 걸려서 틀렸던 게 아니라, 공백이 여러 개 있는 경우 split() 연산을 사용하면 split_s = ['abc', '', 'today', ''] 와 같은 형태로 들어가기 때문에, 이에 대한 처리를 해 주지 않아서 런타임 에러가 발생했던 것에 대한 처리를 해주고 채점했더니, 통과하였다.
2. Others
def solution(s):
return ' '.join([word.capitalize() for word in s.split(" ")])
captialize() 함수를 활용하여 간단하게 풀어냄 .. 라이브러리 활용이 이래서 중요해 ..
'CS > Coding Test' 카테고리의 다른 글
피보나치 수 (0) | 2021.08.31 |
---|---|
최댓값과 최솟값 (0) | 2021.08.31 |
N개의 최소공배수 (0) | 2021.08.30 |
주식가격 (0) | 2021.08.27 |
다리를 지나는 트럭 (0) | 2021.08.25 |
블로그의 정보
코딩하는 오리
Cori