본문 바로가기

Python/코딩테스트

[프로그래머스/python] 코딩테스트 연습 Lv.2 (6월 다섯 번째 주 2)

728x90

JadenCase 문자열 만들기

문제 설명 & 입출력 예

 

문제 발생

def solution(s):
    answer = ''
    for i in range(len(s)):
        if 97<=ord(s[i])<=122:
            if s[i-1]==" " or i==0:
                answer+=chr(ord(s[i])-32)
            else:
                answer+=s[i]
        elif 65<=ord(s[i])<=90:
            if s[i-1]!=" ":
                answer+=chr(ord(s[i])+32)
            else:
                answer+=s[i]
        else:
            answer+=s[i]    
    return answer

코드 실행은 되는데, 채점이 안된다(제발 테스트 케이스 알려줬으면 좋겠어)

코드를 봐도 뭐가 문제인지 모르겠어서 그냥 솔루션을 보게 되었다.

 

capitalize() & title() 함수 사용법

def solution(s):
    answer = ''
    s=s.split(' ')
    for i in range(len(s)):
        # capitalize 내장함수를 사용하면 첫 문자가 알파벳일 경우 대문자로 만들고
        # 두번째 문자부터는 자동으로 소문자로 만든다
        # 첫 문자가 알파벳이 아니면 그대로 리턴한다
        s[i]=s[i].capitalize()
    answer=' '.join(s)
    return answer
    

def solution2(s):
	return s.title()

capitalize() : 단어에 적용하며, 첫 글자가 알파벳인 경우, 대문자로 바꿈

title() : 문장에 적용하며, 문장 안의 단어 중, 첫 글자를 모두 대문자로 바꿈

* title() 함수의 문제점 : 3people -> 3People 같이 첫 글자가 알파벳이 아니면, 가장 처음 나오는 알파벳을 바꿈

 

따라서, capitalize() 함수 사용

 

Solution

def solution(s):
    answer = ''
    s=s.split(' ')
    for i in range(len(s)):
        s[i]=s[i].capitalize()
    answer=' '.join(s)
    return answer

 

728x90