문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항
문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
s | return |
---|---|
"try hello world" | "TrY HeLlO WoRlD" |
def solution(s):
b = list(map(str, s.split(" ")))
answer = ""
for i in b :
an = ""
for j in range(len(i)) :
if j % 2 == 0 :
an += i[j].upper()
else :
an +=i[j].lower()
answer += an + " "
answer = answer[:-1]
return answer
1) 리스트 슬라이싱
리스트 슬라이싱은 리스트에서 원하는 부분을 추출하는 것이다.
list[start : end] 의 모습을 가지고 있고,
[:] 인 경우는 처음부터 끝까지, [start :]은 start 인덱스부터 끝까지,
[:end]은 처음부터 end-1 인덱스까지, [start : end] 는 start 부터 end-1까지.
[start : end : step] 은 start부터 end까지 step씩 건너뛰면서
위에서는 [:-1]였기 때문에 처음부터 -2 인덱스까진데
마이너스가 붙은 경우는 맨 마지막 인덱스가 -1이므로 맨 뒤에서 두번째 인덱스까지라는 말이므로 마지막 인덱스인 공백이 없어진 것이다.
2) join
위처럼 answer에 넣어서 하나의 문자열로 만드는 방법도 있지만,
answer += an + " " 대신 answer라는 배열을 생성하고
answer.append(an)으로 배열에 넣고 " ".join(answer)을 리턴하는 방법도 있다.
우선 join 함수의 모양은 '구분자'.join(리스트)이다.
리스트의 요소들 사이에 구분자를 넣어 문자열을 만들어 반환해주는 함수이다.
def solution(s):
s = s.split(" ")
answer = []
for i in s :
answer.append("".join([i[j].upper() if j%2 == 0 else i[j].lower() for j in range(len(i)) ]))
return " ".join(answer)