알고리즘 연습 [이상한 문자만들기]
이상한 문자만들기
문제
toWeirdCase함수는 문자열 s를 매개변수로 입력받습니다.
문자열 s에 각 단어의 짝수번째 인덱스 문자는 대문자로, 홀수번째 인덱스 문자는 소문자로 바꾼 문자열을 리턴하도록 함수를 완성하세요.
예를 들어 s가 try hello world라면 첫 번째 단어는 TrY, 두 번째 단어는 HeLlO, 세 번째 단어는 WoRlD로 바꿔 TrY HeLlO WoRlD를 리턴하면 됩니다.
주의 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단합니다.
나의 풀이
def toWeirdCase(s):
result = ''
j = 1
for i in s:
if i == ' ':
result += ' '
j = 1
elif j > 0:
j -= 1
result += i.upper()
else:
j += 1
result += i.lower()
return result
s.split해서 짝, 홀수 별로 처리하고 다시 join했더니 공백이 두개인 경우 통과하지 못해서 이렇게 처리했었는데, 다른 정답을 보니 그냥 join으로 통과됐었다 ??__??
다른 풀이
def toWeirdCase(s):
return ' '.join([''.join([e.lower() if i%2 else e.upper() for i, e in enumerate(a)]) for a in s.split()])