소소한 컴퓨터 이야기

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

활동하기