본문 바로가기

Problem Solving/Programmers

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

문제 설명

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

 

제한 조건

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

 

입출력 예

문제 풀이

def solution(s):
    s = s.split(' ')
    l = []
    for i in range(len(s)):
        if len(s[i]) >= 1:
            l.append(s[i][0].upper())
        l.append(s[i][1:].lower()+' ')
    if l[-1] == ' ':
        return (''.join(l[:-1]))
    else:
        return ''.join(l).rstrip()

 

Level 1의 이상한 문자 만들기가 떠올랐던 문제

 

입력받은 문자열 s를 공백으로 나눈 리스트 s와 JadenCase로 바꾼 문자열을 담을 빈 리스트 l을 만들었다.

 

s의 길이만큼 반복하는(단어 수 만큼 반복하는) for 문을 만들었다.

- 만약 단어의 길이가 1보다 크면 첫 문자를 대문자로 바꿔 l에 추가한다.

- 이후 나머지 문자들은 소문자로 바꾼 후 공백을 더해 l에 추가한다.

 

여기까지 하면 원래 문자열에서 마지막 단어에 공백이 하나 추가된 상태다(ex l[-1] == 'e ')

👉 출력시 ''.join(l).rstrip()으로 오른쪽 공백을 제거

 

그런데, 문제에서는 원래 문자열의 끝에 공백이 있었던 경우도 생각해줘야 한다🤦‍♂️

👉 l[-1] == ' '인 경우 이를 제거하고 출력 = 원래 문자열의 끝 공백 수만큼 출력

 

다른 풀이

def solution(s):
    s = s.split(' ')
    for i in range(len(s)):
        s[i]=s[i].capitalize()
    return ' '.join(s)

다 풀고 알게 된 파이썬 내장 함수 capitalize() ㅎ

 

capitalize 함수는 주어진 문자열에서 맨 첫 문자를 대문자로, 나머지를 소문자로 바꾼다.

첫 문자가 알파벳이 아니라면 그대로 반환한다.

 

 

이제부터 열심히 써야지🙋‍♂️

 


 

 

코딩테스트 연습 - JadenCase 문자열 만들기

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

programmers.co.kr