라떼는말이야

[프로그래머스 lv1] 이상한 문자 만들기 (파이썬) 본문

알고리즘/코딩 테스트

[프로그래머스 lv1] 이상한 문자 만들기 (파이썬)

MangBaam 2021. 6. 22. 03:55
반응형

문제 설명

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

제한 사항

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

입출력 예

입출력 예

입출력 예 설명

"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.


나의 풀이

def solution(s):
    answer = []
    words = s.split(" ")
    for word in words:
        w = ""
        for i in range(len(word)):
            if i % 2:
                w += word[i].lower()
            else:
                w += word[i].upper()
        answer.append(w)
    return ' '.join(answer)

이 문제에서 조심해야 할 점은 인덱스가 문자열 전체의 인덱스가 아닌 단어 별로 인덱스라는 점이다.

 

그리고 입력이 모두 소문자인 경우와 모두 대문자인 경우를 처리하기 위해 모든 경우에서 짝수 인덱스는 대문자, 홀수 인덱스는 소문자로 처리하였다.

 

엉뚱한 곳에서 시간 낭비 했는데 바로 s.split(" ") 한 부분이다.

처음에는 매개변수 없이 s.split() 으로 해서 100점이 안나왔는데, 그 이유는 s에 공백을 포함한 문자가 들어오면 마지막에 그 공백도 출력해줘야 한다.

 

s.split()으로 하면 모든 공백을 없애버리기 때문에 100점이 안나왔던 것.

 

마지막에 ' '.join(리스트) 하면 리스트의 각 항목을 ' '로 묶는다. 즉, 띄어쓰기가 있는 문자열이 만들어진다.

 

테스트 결과

반응형
Comments