본문 바로가기
Coding/알고리즘 오답

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

by climba 2022. 12. 30.

https://school.programmers.co.kr/learn/courses/30/lessons/12951

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

# 나의 코드(오답)
def solution(s):
    s = s.lower()
    lst = map((lambda x : str(x[0].upper()) + str(x[1:])), s.split(" "))
    answer = " ".join(lst)
    return answer

틀린 이유 : 제한 조건을 보면, 공백문자가 연속해서 나올 수 있다고 되어있는데, 해당 경우를 고려하지 못하였다.
즉, "3people unFollowed me" 라는 문장에 대해서는 잘 작동했지만, "3people    unFollowed me" 이라는 문장에서는 잘 작동하지 않았다.

s.split(" ")이 해당 문장을 ['3people', '', '', '', 'unfollowed', 'me']로 나누는데, ''는 인덱스 1이 없기 때문에 오류가 나오는 것이다.

 

여러가지 풀이가 있지만, 특히나 인상적이였던 두가지 풀이를 적어보겠다.

# 풀이 1
def solution(s):
    answer = ''
    s = s.split(' ')
    for i in range(len(s)):
        word = s[i]
        answer += f' {word.capitalize()}'
        answer = answer.lstrip()
    return answer
# 풀이 2
def Jaden_Case(s):
    return s.title()

1번 풀이는 내 방식과 비슷하나, index를 이용한 lower, upper 사용이 아닌, capitalize()를 이용해 첫 글자만 대문자화 해줬다.

2번 풀이는 title()이라는 파이썬 내장 함수를 이용하였는데, capitalize, title 둘 다 처음 들어봤다.

 

문제를 많이 풀어서 이런 내장 함수를 많이 익히는 것이 중요할 것 같다.

댓글