
프로그래머스 LV1 이상한 문자 만들기(연습문제)
프로그래머스 lv1 이상한 문자 만들기(연습문제)
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다.
각 단어는 하나 이상의 공백문자로 구분되어 있습니다.
각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항
-
문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
-
첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
s | return |
---|---|
“try hello world” | “TrY HeLlO WoRlD” |
입출력 예 설명
“try hello world”는 세 단어 “try”, “hello”, “world”로 구성되어 있습니다.
각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 “TrY”, “HeLlO”, “WoRlD”입니다.
따라서 “TrY HeLlO WoRlD” 를 리턴합니다.
접근
아스키코드를 활용한다.
32는 공백(space)
소문자 ‘a’ 는 97 대문자 ‘A’는 65 즉 대문자 + 32는 소문자, 소문자 - 32는 대문자
chr()
-> 아스키 코드 숫자 값 알려주기 ord()
-> 아스키 코드 숫자로 문자 값 알려주기
풀이
def solution(s):
words_list=s.split(' ')
new_list = []
new_words = ""
for word in words_list:
for i in range(len(word)):
new_words += word[i].upper() if i % 2 == 0 else word[i].lower()
new_list.append(new_words)
return " ".join(new_list)
if __name__ =="__main__":
s = "try hello world" # return = "TrY HeLlO WoRlD"
print(solution(s))
split함수를 사용해서 공백을 기준으로 단어를 나눈다.
그리고 반복문을 활용해서 짝수이면 소문자로, 홀수이면 대문자로 바꿔준다.
# 다른 사람 풀이
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(" ")))
s.split(" ")
으로 공백을 기준으로 나눈 리스트를 만든다.
그리고 lambda식에 홀수면 lower(), 짝수면 upper()로 대소문자를 바꿔주는 함수를 만든 후"".join으로
합쳐주는 조건식을 짜고.
이 람다식에 iterator인s.split(" ")
이 들어가는 것이다.map(조건식, iterator)
str.join(iterable)
:
iterable 의 문자열들을 이어 붙인 문자열을 돌려줍니다. iterable 에 bytes 객체나 기타 문자열이 아닌 값이 있으면 TypeError 를 일으킵니다. 요소들 사이의 구분자는 이 메서드를 제공하는 문자열입니다. <파이썬 공식문서="">파이썬>
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges