본문 바로가기
코딩테스트!(프로그래머스 & 백준)/프로그래머스-Python

코딩테스트 - JadenCase 문자열 만들기 - (프로그래머스)

by Lee_story_.. 2022. 3. 9.
728x90

https://programmers.co.kr/learn/courses/30/lessons/12951

 

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

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

programmers.co.kr

문제


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

  • s는 길이 1 이상 200 이하인 문자열입니다.
  • s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
    • 숫자는 단어의 첫 문자로만 나옵니다.
    • 숫자로만 이루어진 단어는 없습니다.
    • 공백문자가 연속해서 나올 수 있습니다.
  • 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다. ( 첫번째 입출력 예 참고 )

입출력 예

sreturn

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

이번엔 문제가 쉬워보였다!

 

 

일단 문자열을 받고, 조건에 맞게 변경하는 문제였다

조건으로는 

 

1. 첫문자는 대문자로, 나머지는 소문자로 변경해준다

2. 첫문자가 숫자라면 그 단어의 모든 문자는 소문자

 

이렇게 두가지만 지켜주면 되는 문제였다!

 

두 조건을 가지고 짜게되면! 

	s=s.split(" ")#자르고
    
    for i in s:
        memo=""
        i=i.lower()# 모두 소문자로!
        
        if ord(i[0])>=48 and ord(i[0])<=57:# 첫글자가 숫자일시 
            answer+=i+" "
            continue
        else:# 첫글자가 문자일시 첫글자 대문자로
            memo=i[0]
            memo=memo.upper()
            i=memo+i[1:]
            answer+=i+" "
    
    
    return answer[:-1]

 

 

그런데 여기서... 실수한 점이 있었다..

 

만약 문자가 " adg   3eagdag   " 라면 위의 코드는 오류가 날것이다.... 공백 처리를 안한 것...

 

여기서 조건이 하나가 더늘어난다.

3. 공백은 그대로 유지해 줄것

 

이렇게 되면

"adg   3eagdag   "---> "Adg 3eag   " 이렇게 출력되게 하면된다!

 

if i=="":# 공백도 출력해줘야함... 생략 ㄴㄴ
	answer+=" "
   	continue

위의 코드도 for문안에 넣어주자 ㅠ

 

 

 

*all

def solution(s):
    answer = ''
    
    s=s.split(" ")#자르고
    
    for i in s:
        if i=="":# 공백도 출력해줘야함... 생략 ㄴㄴ
            answer+=" "
            continue
        
        memo=""
        i=i.lower()# 모두 소문자로!
        
        if ord(i[0])>=48 and ord(i[0])<=57:# 첫글자가 숫자일시 
            answer+=i+" "
            continue
        else:# 첫글자가 문자일시 첫글자 대문자로
            memo=i[0]
            memo=memo.upper()
            i=memo+i[1:]
            answer+=i+" "
    
    
    return answer[:-1]

 

 

 

 

 

 

틀린점이 있다면 댓 달아주세요!

댓글