문제: 58. JadenCase문자열 만들기
-
첫 문자가 대문자이고, 그 외의 알파벳은 소문자로 만들어서 리턴해라
-
정확도 실패
def solution(s):
s = s.split()
for i, x in enumerate(s):
if not x[0].isdigit():
s[i] = x.title()
return " ".join(s)
print(solution("33sdfs 3people unFollowed me"))
- 계속 정확도 테스트에서 틀렸다.
- title() 함수가 문제인 듯하다.
- s3dfs를 넣으면, S3Dfs를 출력하는 걸로 봐서, 3뒤로 나오는 문자의 첫글자를 다시 대문자로 바꿔주나보다.
def solution(s):
s = s.split()
for i, x in enumerate(s):
if x[0].isdigit():
s[i] = x.lower()
else:
x = x[0].upper()+x[1:].lower()
s[i] = x
return " ".join(s)
print(solution("s3dfs 3people unFollowed 3unFollowed me"))
- 왜 틀렸는지 몰랐는데 이제 알았다.
- 공백을 제거하면 안된다.
- 공백에 uppper() 함수를 걸어줘도 변함없이 공백이다.
def solution(s):
r = ""
for i, x in enumerate(s):
print(i, x, s[i-1])
r += x.upper() if not i or s[i-1] == " " else x.lower()
return r
print(solution("3peOple unFollowed me"))
- 첫 번째에 나오는 인덱스는 무조건 대문자
s[i-1] == " "
이전에 나온 숫자가 공백이었다면, 다음에 나올 i는 대문자가 되어야 한다.- 나머지 소문자
참고자료 [프로그래머스]https://programmers.co.kr/learn/challenges [python_title()함수]https://hashcode.co.kr/questions/695/%EC%8A%A4%ED%8A%B8%EB%A7%81%EC%97%90-%EB%8B%A8%EC%96%B4-%EC%B2%AB-%EA%B8%80%EC%9E%90%EB%A5%BC-%EB%8C%80%EB%AC%B8%EC%9E%90%EB%A1%9C-%EB%B0%94%EA%BE%B8%EB%8A%94-%EB%B0%A9%EB%B2%95%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%95%8C%EA%B3%A0%EC%8B%B6%EC%8A%B5%EB%8B%88%EB%8B%A4 [참고블로그]https://burningrizen.tistory.com/152