Slow is better than NOTHING

Programmers 풀이/[LEVEL 1]

[Python] 프로그래머스 - 이상한 문자 만들기

Jeff_Kang 2019. 6. 4. 20:34
반응형

- 문제 설명

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

- 제한 사항

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

- 입출력 예

s return
"try hello world" "TrY HeLlo WoRlD"

 

 문제의 제한 사항을 잘 읽어보시면 문자열 "전체"가 아닌 공백 문자로 분리 된 "각 단어" 에 대한 홀수 짝수 인덱스를 검사해야하는 문제입니다. 그렇다면 먼저 이어져 있는 문자열을 공백을 기준으로 모두 Parsing 해야겠죠?

new_list = s.split(' ')

split 메소드를 이용해서 간단하게 리스트 형태로 각 문자열을 리턴받을 수 있습니다. 이 명령문을 실행하게 되면 new_list라는 list에는 ["try", "hello", "world"] 가 리턴되게 됩니다.

이제 리스트의 각각의 요소(문자열)에 대해서 짝수번째 인덱스를 가진 문자는 대문자, 홀수 번째 인덱스를 가진 문자는 소문자로 만들어야합니다. 

파이썬의 문자열은 immutable한 자료형(변경 불가능하다는 것) 이기 때문에 어떤 요소값에 직접 접근해서 문자열을 변경하는 것이 허용되지 않습니다.

>> s="Python"
>> s[0] = 'i'

다음과 같이 s 라는 문자열이 "Python" 을 담고 있는 문자열 자료형이라고 할때 s[0] 를 i를 넣어준다고해서 "iython" 이 되지 않는다는 얘기입니다. 문자열의 특정 요소를 변경하고 싶다면 문자열을 새로 만들어야합니다.

저는 다음과 같이 삼항 연산자를 이용하여 각 인덱스가 홀수 , 짝수일때를 검사하여 s라는 문자열을 새롭게 만들고 이를 리스트에 append하여 최종적으로 완성된 문자열을 리턴하도록 작성해보았습니다.

def solution(s):
    new_list=s.split(' ')
    a=[]
    for i in new_list:
        s=''
        for j in range(0,len(i)):
            s+=i[j].upper() if j%2==0 else i[j].lower()
        a.append(s)
    return ' '.join(a)

 

반응형