알고리즘/프로그래머스 연습문제

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

수디sudy 2022. 10. 28. 12:17

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

 

프로그래머스

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

programmers.co.kr

 

 

사내 코딩테스트 때문에 프로그래머스 모든 문제에서 'Python3+level2' 로 맞춰놓고 처음부터 푸는 중인데

어이가 없어서 포스팅하는 문제

 

🤍 첫 코드 (실패)

def solution(s):
    answer = ''
    word = s.split()
        
    for i in range(0, len(word)):
        temp = ''
        for j in range(0, len(word[i])):
            if j == 0:
                temp += word[i][j].upper()
            else:
                temp += word[i][j].lower()
        if i == len(word)-1:
            answer += temp
        else:
            answer += (temp + ' ')
         
    return answer

내가 이 문제를 보고 당연하게도 처음 풀었던 방식은

1. 문장을 띄어쓰기 기준으로 split

2. 반복문으로 단어 별로 맨 앞글자는 upper(), 나머지는 lower() 를 해서 answer에 더하기

였다..

이랬더니 50점도 못맞는 결과가 나와서 '??????????????' 도대체 왜?????? 하다 문제를 가만히 읽어보니

단어 사이에 공백이 2개 이상 올 수 있었다

띠용 .. 그래서 바꾼 코드

 

🤍 바꾼 코드

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

그래서 split 하지 않고 들어온 문자열 그대로 왼쪽에 공백이 있으면 upper(), 아니면 lower() 로 짰다.

(맨 첫 문자는 s[i-1]로 왼쪽 인덱스로 접근이 불가능 하기 때문에 예외처리)

 

만약에 테스트케이스 30개 결과를 볼 수 없다면 그냥 당연스럽게 맞았을 줄 알고 넘어갔을 .. 

교훈을 주는 문제 (ง •_•)ง