[문제]
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항
-
문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
-
첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
s |
return |
try hello world |
TrY HeLlO WoRlD |
입출력 예 설명
try hello world는 세 단어 try, hello, world로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 TrY, HeLlO, WoRlD입니다. 따라서 TrY HeLlO WoRlD 를 리턴합니다.
[1차 풀이]
- 단어 마다 split 하여 index를 검색한다.
def solution(s):
answer = ''
word = s.lower().split(" ")
for w in word:
for i, x in enumerate(w) :
if i % 2== 0 :
answer += x.upper()
else :
answer += x
answer += " "
return answer
[2차 풀이]
- for문을 한번만 쓰고도 가능 할 것 같아서 수정해 보았다.
- if문과 elif문을 합칠 수 있을 것 같다.
def solution(s):
answer = ''
idx = 0
for c in s:
if c == " ":
idx=0
answer += " "
elif idx == 0 :
answer += c.upper()
idx=idx+1
else:
answer += c.lower()
idx=0
return answer
[3차 풀이]
- 대문자, 소문자 등 케이스가 두가지인 경우는 처음 시작할 떄 하나의 케이스로 변경 후 작업하면 코드를 줄일 수 있다.
def solution(s):
answer = ''
idx = 0
for c in s.lower():
if idx == 0 :
answer += c.upper()
idx=idx+1
else:
answer += c
idx=0
return answer
[4차 풀이]
- 1차 풀이의 답을 for ~ if ~ else 문을 줄여보자
- 그 동안 [ a if ~ else b for x in ~] 과 같은 구문을 잘못 이해하고 있었다.
def solution(s):
word = s.lower().split(" ")
return ' '.join([ ''.join([ x.upper() if i % 2 == 0 else x for i, x in enumerate(w)]) for w in word ])
[링크]
https://programmers.co.kr/learn/courses/30/lessons/12930
'Python' 카테고리의 다른 글
[Python/프로그래머스] 12932_자연수 뒤집어 배열로 만들기 - reverse (0) | 2020.04.02 |
---|---|
[Python/프로그래머스] 12931_자릿수 더하기 - 재귀 함수 (0) | 2020.04.02 |
[Python/프로그래머스] 12926_시저 암호 - 알파벳 리스트 만들기 (0) | 2020.04.01 |
[Python/프로그래머스] 12922_수박수박수박수박수박수 - str*n , index (0) | 2020.03.29 |
[Python/프로그래머스] 12921_소수 찾기 ★★★ (0) | 2020.03.29 |