[프로그래머스 | 파이썬] 이상한 문자 만들기

devheyrin·2022년 6월 14일
0

codingtest

목록 보기
57/65

문제 링크

코드

def solution(s):
    words = s.split()
    arr = list(s)
    cnt = 0
    i = 0
    while True:
        if arr[i] == ' ':
            i += 1
            continue
            
        word = words[cnt]
        
        for j in range(len(word)):
            word = list(word)
            if j % 2:  # 홀수 
                word[j] = word[j].lower()
            else:
                word[j] = word[j].upper()
       
        arr[i:i+len(word)] = word
        i += len(word)
        if i >= len(arr):
            break
        cnt += 1
        if cnt >= len(words):
            break
                
    
    return ''.join(arr)

풀이 설명

'각 단어는 하나 이상의 공백문자로 구분되어 있다'는 것을 간과했다.
단어 사이에 공백문자는 꼭 하나일 필요는 없다. 여러 개의 공백이 들어갈 수 있고, 결과를 리턴할 때 이 공백의 개수를 유지해야 한다.
그래서 전체 문장 리스트와 공백 기준으로 구분된 단어 리스트를 구분해 각각 순회하는 방식을 사용했다. 먼저 while 문으로 전체 문장 리스트를 순회하면서 현재 인덱스의 값이 공백이 아닌 경우에는 단어가 나왔다고 판단해 단어 내부를 순회한다. 단어 내부에서 인덱스가 홀수이면 소문자로, 짝수이면 대문자로 치환해준다.
단어 내부 순회가 끝나면 전체 문장 리스트에서 해당 단어가 나온 부분만큼을 치환된 단어로 대체해주면 된다.

profile
개발자 헤이린

0개의 댓글