본문 바로가기

코딩테스트/Python

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

내 코드

def solution(s):
    answer = ""
    
    if s[0]>='a' and s[0] <= 'z':
        answer+= s[0].upper()
    else:
        answer+= s[0]
    
    for i in range(1,len(s)):
        if s[i-1]==" ":
            if s[i]>='a' and s[i] <= 'z':
                answer += s[i].upper()
            else:
                answer+=s[i]
        else:
            if s[i]>='A' and s[i] <= 'Z':
                answer+=s[i].lower()
            else:
                answer+=s[i]
    return answer

첫번째 문자를 대문자로 바꿔줘야한다. 가장 처음의 문자를 대문자로 바꿔주고 그다음 문자부터 앞의 문자가 공백이면 대문자로 바꿔주고 앞의 문자가 공백이 아니면 소문자로 바꿔준다.

처음에는 숫자는 upper이 인식을 못할줄알고 저렇게 따로 나누어줬는데 숫자나 기호는 무시한다고한다. 필요없는 코드를 빼면 다음과 같은 코드가 된다.

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

    return answer

훨씬 깔끔해졌다!!

 

문제의 테스트케이스가 추가되어서 다른사람코드가 거의 틀린거다.. 공백이 두개일때 돌아가지 않는 코드가 많다.

답은 아니지만 신기한 함수를 봐서 적어둔다. title이라는 함수인데 가장 처음의 문자만 대문자로 바꿔준다. 만약 가장 앞에 숫자나 기호가 온다면 무시하고 그 다음 문자를 대문자로 바꿔준다. 

예를들어 "2434efi"이면 "2434Efi" 이렇게 바꿔준다.