IT/Algorithm

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

BronxBomber 2024. 6. 13. 16:23
728x90

이상한 문자 만들기

문제

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

제한 사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

입출력

  • s: "try hello world"
  • return : "TrY HeLIO WoRID"

입출력 예 설명

"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.

나의 문제풀이 접근법

입력값을 리스트로 받되, ' '을 기준으로 단어만 추출하게끔 split() 함수를 사용한다.

리스트를 반복문을 통해 검사하면서 짝수번 인덱스에 있는 원소 값은 대문자로, 홀수번 인덱스에 있는 원소 값은 소문자로 변환한다. 이 때 이중 반복문을 돌려야 하는데, 하나는 단어들의 집합을 기준으로 1차를 돌리고 2차는 각 단어별 글자수를 기점으로 돌려야 한다. 이 때 1차 반복문의 사이클이 한번 돌을 때마다 공백을 추가한다. (단, 마지막 단어가 끝나고 나서는 공백 추가가 안되도록)

나의 코드

def solution(s):
    array = list(s.split()) # {'try','hello','world'}
    print("test value: ", array)
    print("array value: ", len(array))
    result_array = []
    for k in range(len(array)):
        i = array[k]
        ##print("i value: ", i)
        for j in range(len(i)):
            if j%2 == 0:
                i[j].isupper()
                result_array.append(i[j].upper())

            else:
                i[j].islower()
                result_array.append(i[j].lower())
            """temp_list.append(''.join(result_array))"""
        if k < len(array)-1:
            result_array.append(' ')
    ##print("middle value : ", ''.join(result_array))
    ##print("final value : " , ''.join(temp_list))
    answer = ''.join(result_array)
    return answer

'IT > Algorithm' 카테고리의 다른 글

[백준] 영화감독 숌  (0) 2024.06.26
[프로그래머스] 소수찾기  (0) 2024.06.22
[프로그래머스] 시저 암호  (2) 2024.06.13
[구름] 절약  (0) 2024.06.13
[프로그래머스] 구명 보트  (0) 2024.06.11