티스토리 뷰

728x90
반응형

 

https://programmers.co.kr/learn/courses/30/lessons/12930

 

코딩테스트 연습 - 이상한 문자 만들기

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

programmers.co.kr

 

 


 

 

<나의 풀이>

def solution(s):
    answer = ''
    s_list = s.split(' ')

    for i in range(len(s_list)) :
        for j in range(len(s_list[i])) :
            if j % 2 == 0 :
                answer += s_list[i][j].upper()
            else :
                answer += s_list[i][j].lower()
                
        if i != (len(s_list)-1) :
            answer += ' '
        
    return answer

 

처음에 split()안을 공백으로 냅둬서 실패가 떴다.

split의 기본값이 공백이라 빈칸으로 냅둔건데, 이게 실패의 원인일 줄이야🤦🏻‍♀️

차이점을 찾아보니 기본값이 공백인건 맞지만

split()은 모든 공백을 한번에 처리하고 split(' ')은 공백을 모두 따로따로 처리한다고 함.

예시를 통해 더 알아보자.

 

'''
원래 문자열 : "try  h  ello world"
바뀐 문자열 : "TrY  H  ElLo WoRlD"
'''

# split()일 때 => 공백 2칸이 1칸이 됨
print(s_list) # 출력 결과 : ['try', 'h', 'ello', 'world']
print(answer) # 출력 결과 : TrY H ElLo WoRlD

# split(' ')일 때 =>공백 2칸을 따로 처리함
print(s_list) # 출력 결과 : ['try', '', 'h', '', 'ello', 'world']
print(answer) # 출력 결과 : TrY  H  ElLo WoRlD

 

 

<다른 사람의 풀이>

def toWeirdCase(s):
    return " ".join(map(lambda x: "".join([a.lower() if i % 2 else a.upper() for i, a in enumerate(x)]), s.split(" ")))

# <배운점> 
# => enumerate를 사용하여 푸는 법을 배움

 

728x90
반응형
댓글