Algorithm/Online judge

[프로그래머스] 연습문제 > JadenCase 문자열 만들기

민철킹 2021. 1. 26. 17:07

programmers.co.kr/learn/courses/30/lessons/12951?language=python3

 

코딩테스트 연습 - JadenCase 문자열 만들기

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

programmers.co.kr

문제 설명

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

제한 조건

  • s는 길이 1 이상인 문자열입니다.
  • s는 알파벳과 공백문자(" ")로 이루어져 있습니다.
  • 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다. ( 첫번째 입출력 예 참고 )

입출력 예

sreturn

3people unFollowed me 3people Unfollowed Me
for the last week For The Last Week

 


 

풀이

먼저 공백을 기준으로 나누어 answer에 담는다.
for문을 통해 answer리스트의 요소를 하나씩 가져오는데 enumerate를 통해
인덱스 값도 같이 가져온다.
슬라이싱을 통해 첫번째 문자가 알파벳이면:
    첫번째 글자를 대문자로 나머지를 소문자로 바꿔줌.
    첫번째 글자 p[:1], 첫 번째를 제외한 나머지 글자 p[1:]
알파벳이 아니라면:
    첫번째 글자를 그대로 두고 나머지를 소문자로 바꿔줌.

마지막에는 문자열로 다시 합쳐줘야 하는데 " ".join을 해줌으로써
단어 사이에 공백을 추가해줌.

 

def solution(s):
    answer = s.split(" ")
    for i,p in enumerate(answer):
        if p[:1].isalpha():
            answer[i] = p[:1].upper() + p[1:].lower()
        else:
            answer[i] = p[:1] + p[1:].lower()
    return " ".join(answer)

 

++ s.title()이라는 함수를 쓰면 각 단어의 첫글자만 대문자로 나머지는
소문자로 돌려준다.. ㅋㅋㅋ 이런 내장함수도 있네 ;

def solution(s):
	return s.title()
반응형