CodingTest/programmers

[프로그래머스/Programmers] 이상한 문자 만들기 - Python

ukunV 2021. 9. 1. 00:22

Link

 

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

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

programmers.co.kr

 

Solution

문제를 보면 공백이 연속해서 나오는지 s는 소문자로만 이루어져 있는지에 대한 언급이 없으므로 공백이 연속으로 나올 수도 있고 소문자 대문자 섞여서 줄 수도 있다고 생각하고 문제를 해결해야 한다.

 

필자의 첫번째 풀이는 단어 마다 인덱스를 새로 시작해주기 위해 b를 사용했다. 공백을 만나면 b를 0으로 초기화해주어서 공백 다음에 나오는 단어의 인덱스를 0부터 잡아주도록 하였다.

 

두번째 풀이는 공백을 기준으로 split()을 사용하여 단어마다 두번째 for문을 돌게 하였다.

 

def solution(s):
    answer = ''

    b = 0
    for i in range(len(s)):
        if s[i] == ' ':
            answer += ' '
            b = 0
            continue

        if b % 2 == 0:
            answer += s[i].upper()
            b += 1
        else:
            answer += s[i].lower()
            b += 1

    return answer
def solution(s):
    answer = []

    s = s.split(' ')

    for i in range(len(s)):
        w = ''
        for j in range(len(s[i])):
            t = s[i][j].upper() if j % 2 == 0 else s[i][j].lower()
            w += t
        answer.append(w)

    return ' '.join(answer)
🔑 key point: Indexing, split()

 

Other Solution

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(" ")))