알고리즘 연습 [이상한 문자만들기]

이상한 문자만들기

문제

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()])