이상한 문자 만들기
toWeirdCase 함수는 문자열 s를 매개변수로 입력받습니다.
문자열 s에 각 단어의 짝수번째 인덱스 문자는 대문자로, 홀수번째 인덱스 문자는 소문자로 바꾼 문자열을 리턴하도록 함수를 완성하세요.
예를 들어 s가 “try hello world”라면 첫 번째 단어는 “TrY”, 두 번째 단어는 “HeLlO”, 세 번째 단어는 “WoRlD”로 바꿔 “TrY HeLlO WoRlD”를 리턴하면 됩니다.
주의 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단합니다.
- 내 풀이
def toWeirdCase(s):
for idx, ele in enumerate(s):
if s[idx] == " ":
return s[:idx] + " " + toWeirdCase(s[idx+1:])
elif idx % 2 == 0:
s = s[:idx] + s[idx].upper() + s[idx+1:]
else:
s = s[:idx] + s[idx].lower() + s[idx+1:]
return s
print("결과 : {}".format(toWeirdCase("try hello world")));
- 다른 사람 풀이
def toWeirdCase(s):
return " ".join(["".join([x.lower() if i%2 else x.upper() for i,x in enumerate(w)]) for w in s.split()])
소감
- 재귀가 편해서 재귀를 활용하려고 한다. 하지만 재귀함수와 컴프리헨션을 같이 사용하고 싶은데 그 방법은 잘 모르겠다. 이에 대해 좀 더 고민해봐야겠다.
- enumerate() 메서드를 알고 있었지만 잘 사용하지는 못했다. 이번 문제를 풀고 해당 함수가 제법 유용하다는 것을 알게되었다. 자주 사용해야지.