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

Seohyun·2024년 9월 5일
0

알고리즘

목록 보기
30/36

문자열은 리스트처럼 인덱싱하여 값을 변경하는 것이 불가하다. 그렇다고 replace() 함수를 사용하면 중복되는 문자들이 모두 변경되기 때문에 사용하지 않기로 했다. 그래서 문자열을 traverse하며 문자 하나씩 대소문자를 설정해 answer = ''에 저장하도록 했다.

def solution(s):
    answer = ''
    ss = s.split(' ')
    for i in range(len(ss)-1):
        answer += ss[i][0].upper()
        answer += ss[i][1:].lower()
        answer += ' '
    answer += ss[-1][0].upper()
    answer += ss[-1][1:].lower()
    return answer

그런데 제출을 해보니 많은 테스트케이스에서 런타임에러를 얻었다.

def solution(s):
    ss = s.split(' ')
    
    answer = [
        word[0].upper() + word[1:].lower() for word in ss
    ]
    answer = ' '.join(answer)
    
    return answer

위 코드도 마찬가지고, 다양하게 코드를 변형해 봐도 결과는 같았다. 그래서 문제를 다시 잘 읽어 보았다.

공백문자가 연속해서 나올 수 있습니다.라고 되어 있다. 그래서 테스트케이스를 추가하고 다시 풀어봤다.

def solution(s):
    ss = s.split(' ')
    
    answer = [
        word[0].upper() + word[1:].lower() if word else '' for word in ss
    ]
    answer = ' '.join(answer)
    
    return answer

드디어 정답! 질문하기 게시판을 보니 다들 비슷한 문제로 정답을 얻지 못하고 있었다. 문자열 맨앞에 공백이 있는 경우도 고려해 보라는 조언도 있었다.

profile
Hail hamster

0개의 댓글