[프로그래머스][Python] JadenCase 문자열 만들기

최더디·2021년 2월 2일
0
post-thumbnail

📃 문제 설명

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건

  • s는 길이 1 이상인 문자열입니다.
  • s는 알파벳과 공백문자(" ")로 이루어져 있습니다.
  • 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다. ( 첫번째 입출력 예 참고 )

입출력 예

sreturn
"3people unFollowed me""3people Unfollowed Me"
"for the last week""For The Last Week"

💻 문제 풀이

def solution(s):
    answer = []
    for word in s.lower().split(" "):       # ' ' 기준으로 데이터를 분리
        answer.append(word.capitalize())    # caplitalize()를 통해 앞 문자만 대문자로 변경
    return " ".join(answer)                 # join()을 사용해 리스트를 문자열로 변경


print(solution("  test  TTTs "))   # result: '  Test  Ttts '

중요 포인트

  • s는 '알파벳'과 '공백(" ")'으로 이루어져 있다.
    => s가 공백으로 시작한다면 공백도 똑같이 있어야 한다.
    => s.split() 으로 하면 안 되고, s.split(" ")으로 해야 한다.
    => s.split()은 공백이 시작과 끝에 있다면 ['test ttts']로 분리.
    => s.split(" ")은 공백이 시작과 끝에 있다면 ['', '', 'test', '', 'ttts', '']으로 분리.

  • capitalize()를 통해 첫문자만 대문자로 나오도록 변환

처음 작성한 코드

def solution(s):
  answer = []
  for word in s.lower().split():       
  	answer.append(word[0].upper() + word[1:])    # 문자의 첫번째만 upper()를 통해 대문자로 변경
  return " ".join(answer)                

이 코드는 s.split()을 했기 때문에 s의 공백은 없애고, 단어들만 나오도록 분리한다.
그렇기 때문에 오류가 발생한다.

한 줄 코드

def solution2(s):
    return " ".join([i.capitalize() for i in s.lower().split(" ")])
profile
focus on why

0개의 댓글