프로그래머스

프로그래머스 이상한 문자 만들기 | Python

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

 

중요! 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야 합니다.

 

1. 처음에 한 것

def solution(s):
    for index, i in enumerate(s):
        if index % 2==0:
            i.upper()
        else:
            i.lower()
            
    return s

 

문제점

- i.lower()는 문자열 i를 변경하는 것이 아니라, 대문자 또는 소문자로 변환한 새로운 문자열을 반환합니다. 따라서 해당 결과를 따로 저장해주거나, 원래의 문자열 s를 업데이트해주어야 합니다.

 

 

def solution(s):
    answer=[]
    for index, i in enumerate(s):
        if index % 2==0:
            answer += i.upper()
        else:
            answer += i.lower()
            
    return answer

 

문제점

 

 

def solution(s):
    answer=""
    for index, i in enumerate(s):
        if index % 2==0:
            answer += i.upper()
        else:
            answer += i.lower()
            
    return answer

 

문제점

- 공백 기준이 아닙니다..

 

2. 정답

def solution(s):
    answer=""
    list=s.split(' ')
    for k in list:
        for i in range(len(k)):
            if i%2==0:
                answer+=k[i].upper()
            else :
                answer+=k[i].lower()
        answer += ' '
        
    return answer[:-1]

 

마지막에 불필요한 공백이 추가되기 때문에 [:-1]를 사용하면 마지막 문자(여기서는 공백일 수 있음)를 제외하고 반환하게 되어 마지막에 불필요한 공백이 포함되지 않도록 합니다.

 

 


 

enumerate() 함수

함수는 순서가 있는(iterable) 자료형(리스트, 튜플, 문자열 등)을 입력으로 받아, 각 요소와 그 요소의 인덱스를 순회 가능한 객체로 반환하는 파이썬 내장 함수입니다. 이 함수는 for 루프에서 유용하게 활용되며, 반복문을 통해 요소와 인덱스를 동시에 접근할 수 있게 해줍니다.

 

 enumerate(iterable, start=0

  • iterable: 순회 가능한 객체(리스트, 튜플, 문자열 등)
  • start: 인덱스 시작값을 지정할 수 있으며, 기본값은 0입니다.

간단한 예제입니다.

fruits = ['apple', 'banana', 'cherry']

for index, fruit in enumerate(fruits):
    print(f"Index {index}: {fruit}")

Index 0: apple
Index 1: banana
Index 2: cherry

 

enumerate() 함수를 사용하면 반복문에서 인덱스와 요소에 동시에 접근할 수 있어 코드를 더 간결하게 작성할 수 있습니다.