문제 설명

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

제한사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
  • 👉 문제 보러가기


문제 풀이

(1) Pseudo-Code

  • s에 포함된 문자를 하나씩 순회한다.
  • 공백인 경우 반환할 문자열에 그대로 추가한다(idx 값 초기화).
  • 공백이 아닌 경우, idx값의 짝수 홀수 여부에 따라 upper, lower함수로 대소문자 처리한다.

(2) 코드 작성

def solution(s):
    total_text = ''
    idx = 0
    for text in s:
        if text == ' ':
            total_text += text
            idx = 0
            continue
        # 공백이 아닌 text일 경우
        if idx % 2 == 0:
            total_text += text.upper()
            idx += 1
        else:
            total_text += text.lower()
            idx += 1
    return total_text

(3) 코드 리뷰

  • 처음에 공백을 기준으로 분리(split 함수 사용)했을 때 테스트에서 실패 sign이 떠서 반례를 알아보니 공백은 그대로 두어야한다고 한다.
  • 그래서 공백여부를 먼저 판단하고 공백이 아닌 경우 idx를 하나씩 늘려가는 식으로 코드를 작성했다.
    • 공백일 경우 idx 값 0으로 초기화
  • 반례: “ Try hello world “ -> 기댓값: “ TrY HeLlO WoRlD “


👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기