728x90
https://programmers.co.kr/learn/courses/30/lessons/12951
문제
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]
틀린점이 있다면 댓 달아주세요!
'코딩테스트!(프로그래머스 & 백준) > 프로그래머스-Python' 카테고리의 다른 글
코딩테스트 --- 문자열 압축-(프로그래머스 / 파이썬) (3) | 2022.03.26 |
---|---|
코딩테스트-전화번호 목록-(프로그래머스) (0) | 2022.03.15 |
코딩 테스트- [3차] 압축(프로그래머스) (2) | 2022.03.08 |
영어 끝말잇기!(코딩테스트-프로그래머스) 파이썬! (0) | 2022.03.06 |
k진수에서 소수 개수 구하기(코딩테스트-프로그래머스) (0) | 2022.03.05 |
댓글