본문 바로가기
PS/programmers

[Lv. 1] 이상한 문자 만들기(Python)

by 강렬한 스포트라이트 2023. 3. 24.

안녕하세요. 

강렬한 스포트라이트 입니다!

 

하기의 문제를 Python 언어를 사용하여 구현하고자 합니다.

 

<문제 설명>

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

 

<제한 사항>

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

 

<입출력 예>

return
"try hello world" "TrY HeLlO WoRlD"


 

1) .split() 함수로 공백 기준 문자열을 구분하고, enumerate() 함수로 index와 값을 사용하여 대소문자를 변환합니다.
이후 처음 문자열 s에서 공백의 위치를 확인하여 result에 삽입하여 구현한 코드입니다.
 

def solution(s):
    result=[]
    for i in s.split(" "):
        for idx1, j in enumerate(i):
            if idx1%2==0:
                result.append(j.upper())
            else:
                result.append(j.lower())
    for idx2,k in enumerate(s):
        if k==" ":
            result.insert(idx2," ")
    return ''.join(r for r in result)

 
 
2) 구분된 문자열을 기준으로 대소문자를 변환하고 맨 끝에는 공백을 추가해줍니다.
이후 리턴할 때 [:-1] 슬라이싱을 사용하여 문자열의 마지막 공백은 출력되지 않도록 구현한 코드입니다.
 

def solution(s):
    result=''
    for i in s.split(" "):
        answer=''
        for j in range(len(i)):
            if j%2==0:
                answer+=i[j].upper()
            else:
                answer+=i[j].lower()
        result+=answer+" "
    return result[:-1] #맨 오른쪽 값을 제외하고 출력함

 


3) 문자열을 분리하지 않고 공백(" ")에 해당할 경우 인덱스를 초기화하여 구현한 코드입니다.

 

def solution(s):
    idx=-1;result=""
    for i in s:
        if i==" ":
            idx=-1
            result+=" "
        else:
            idx+=1
            if idx%2==0:
                result+=i.upper()
            else:
                result+=i.lower()
    return result

 

 

해보시고 문의사항이 있으시면 댓글로 남겨주세요.´◡`
감사합니다!

 

 

반응형
SMALL