[그 외]/ㄴ (코테연습 : 파이썬 ver)
[프로그래머스] 이상한 문자 만들기 (파이썬)
__hyeon2__
2021. 6. 17. 12:59
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
반응형