문제 설명

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건
  • s는 길이 1 이상인 문자열입니다.
  • s는 알파벳과 공백문자(" ")로 이루어져 있습니다.
  • 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다. ( 첫번째 입출력 예 참고 )
입출력 예sreturn
"3people unFollowed me" "3people Unfollowed Me"
"for the last week" "For The Last Week"

 

풀이

- .upper()와 .lower()를 쓰면 쉽게 대소문자로 바꿀수있겠지만, 아스키코드를 연습해보고 싶어서 아스키코드 값으로 시도해보았다.

- 중간에 공백이 여러개 있는 경우가 너무 힘들었다 ㅜㅜ

- 문자열을 먼저 .split(" ")로 나누고 "" 빈 공백인 경우 " "로 변경,

- 실제 한 단어가 끝나고 대소문자 변형이 완료되어서 공백이 필요한 경우 위의 경우가 아닌 경우에만 공백 추가

def solution(s):
    s_list = s.split(" ")
    print(s_list)
    count = 0
    answer_str = ''
    
    for i in range(len(s_list)):
        s_str = str(s_list[i])
        if s_list[i] == "":                #현재 문자가 공백인 경우 공백 추가
            answer_str += " "
        else :
            if 97 <= ord(s_str[0]) and ord(s_str[0]) <= 122 :
                answer_str+= chr(ord(s_str[0])-32)
            else :
                answer_str+=s_str[0]
            
            for j in range(1, len(s_str)) :
                if not 97 <= ord(s_str[j]) and ord(s_str[j]) <= 122 :    #중간이 대문자인 경우
                    answer_str += chr(ord(s_str[j])+32)
                else :
                    answer_str += s_str[j]
        if s_list[i] != "":                 #빈 공백이 아닌 경우 단어 사이에 공백 추가
            answer_str += " "
    
    print(answer_str[:-1])
    return answer_str[:-1]

 

풀이 2

 - capitalize() 함수를 쓰면 쉽게 첫 글자만 대문자로, 뒤에 문자는 소문자로 변경해준다.

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

    answer = ' '.join(new_str)
    return answer

'코테풀이 > 프로그래머스' 카테고리의 다른 글

2단계_피보나치 수  (0) 2021.12.29
2단계_다음 큰 숫자  (0) 2021.12.29
2단계_짝지어 제거하기  (0) 2021.12.27
2단계_H-Index  (0) 2021.12.27
2단계_괄호 변환  (0) 2021.12.23
2단계_JadenCase 문자열 만들기(대소문자 변경)