Level 1. 이상한 문자 만들기

Pear_Mh·2021년 6월 17일
0

Programmers-Level 1.

목록 보기
35/49

35. 이상한 문자 만들기

코딩테스트 연습 > 연습문제 > 이상한 문자 만들기
https://programmers.co.kr/learn/courses/30/lessons/12930


문제 설명

Input value =

  • s = 한개 이상의 단어로 구성되어 있는 문자열

Output value =

  • 단어를 기준으로 짝수번째 알파벳은 대문자, 홀수번째 알파벳은 소문자인 문자열

제한 조건

ㆍ 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야한다.

ㆍ 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 한다.


문제 구상

#00
s = "try hello world"
s = s.lower().split(' ')

문자열을 소문자 형태로 바꾸어 대문자로 바꾸어야 할 경우만 고려할 수 있도록 함.

answer = []
#01
for i in s:
    words = ''
    for j in range(len(i)):
        if j==0 or j%2==0:
            words+=(i[j].upper())
        else:
            words+=(i[j])
    answer.append(words)

빈 리스트(answer)와 for문 안의 빈 문자열(words)를 만들어 이중 for문을 구성하여
내부의 for문이 끝나면 완성된 words가 answer에 append 되도록 작성

#02
' '.join(answer)

문제 풀이

def solution(s):
    s = s.lower().split(' ')
    answer = []
    for i in s:
        words = ''
        for j in range(len(i)):
            if j==0 or j%2==0:
                words+=(i[j].upper())
            else:
                words+=(i[j])
        answer.append(words)
    return ' '.join(answer)

# Code test
s = "try hello world"
solution(s)

map-lambda를 이용한 풀이

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

마치며

  1. 확실히 map-lambda를 이용한 풀이가 간결하나, 아직 skill이 완전하지 못하기에 직관적인 프로그래밍을 원활하게 할 수 있도록 노력해야겠다.
profile
Beyond the new era.

0개의 댓글