애플파이썬

[프로그래머스] Lv.2 JadenCase 문자열 만들기 (파이썬) 본문

파이썬/프로그래머스

[프로그래머스] Lv.2 JadenCase 문자열 만들기 (파이썬)

유진파이 2025. 3. 15. 13:43

문제 설명

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건
  • s는 길이 1 이상 200 이하인 문자열입니다.
  • s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
    • 숫자는 단어의 첫 문자로만 나옵니다.
    • 숫자로만 이루어진 단어는 없습니다.
    • 공백문자가 연속해서 나올 수 있습니다.

나의 풀이

def solution(s):
    answer = []
    words = list(s.split(' '))
    for word in words:
        if word[0].isnumeric():
            answer.append(word[0]+word[1:].lower())
        else:
            answer.append(word[0].upper() + word[1:].lower())
    return ' '.join(answer)
  • 예시 문제는 무사히 통과가 됐는데 문제는 공백 문자가 2개 이상 나올 때 였다!
  • 공백이 카운트가 안되고 아예 삭제 됐다가 공백 하나씩으로만 마지막에 합쳐주니까 안되는 것.

 

def solution(s):
    answer = ''
    words = s.split(" ") #공백을 기준으로 자르기 때문에 나머지 공백은 유지됨
    for i, word in enumerate(words):
        if word:
            answer += word[0].upper() + word[1:].lower()
        else:
            answer += "" #공백 유지
        
        if i != len(words) - 1: #마지막 요소가 아니면 단어 사이에 공백 추가
            answer += " "
        
    return answer
  • 이런 방식으로 공백을 유지하면서 단어만 바꿔줬다.
  • 여기서 헷갈렸던 부분은 answer += "" 와 answer += " " 의 차이점이었는데...ㅠㅠ 전자는 그냥 공백을 유지(?) 시켜주는 거고 후자는 공백을 하나 추가해주는 거였다!
  • 그래서 마지막 if 문을 보면 마지막 요소가 아니라면 공백을 하나 추가해줘서 처음에 split 할 때 사라졌던 공백을 더해주는 것!
  • split("") 과 split(" ")의 차이를 확실히 알 수 있었다!