본문 바로가기
Coding Test

231030 이상한 문자 만들기 - Level 1

by mmm- 2023. 10. 30.

문제 설명

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



제한사항

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

 

입출력 예

 

입출력 예 설명

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


코드

def solution(s):
    answer = ''
    s_word = s.split(" ")
    
    for i in range(len(s_word)):
        s_list = list(s_word[i])
        for j in range(len(list(s_word[i]))):
            if(s_word[i] == " "):
                break
            s_list[j] = s_list[j].upper() if j%2 == 0 else s_list[j].lower()
            answer += s_list[j]
        
        if(i != len(s_word)-1) :
            answer += " "
    
    return answer

 

풀이

s.split(" ")을 통해 단어별로 구분을 해준다. 각 단어를 문자별로 또 나눠주기 위해 for문을 이용한다. 그리고 각 문자가 짝수자리에 있는지 홀수자리에 있는지 확인하고, 결과에 따라 문자를 대,소문자로 바꿔주기 위해 for문 안에 for문을 한 번 더 사용한다. 대소문자로 바꿔준 후, answer 문자열에 해당 문자를 추가한다. 안쪽에 있는 반복문이 종료될 때마다 마지막 단어를 제외한 각 단어 사이마다 공백을 추가해준다.


다른 코드와 풀이

아래의 코드는 다른 사람들이 작성한 것들로, 내 코드와 비교, 참고하기 위해 가져왔다.

def toWeirdCase(s):
    a=[]
    s=s.split(" ")
    for i in range(len(s)):
        for j in range(len(s[i])):
            if j%2==0:
                a.append(s[i][j].upper())
            else:
                a.append(s[i][j].lower())
        a.append(" ")

    c="".join(a[:-1])
    return c

s.split(" ")을 통해 단어별로 구분 해준 후, 이중 for문을 통해 자릿수가 홀수인지 짝수인지 판별해 그에 따라 대소문자로 변경한 값은 리스트 a에 추가해준다. 긜고 안쪽에 있는 반복문이 끝날 때마다 공백을 추가해 단어별로 구분해준다. 반복문이 끝나면 c="".join(a[:-1]) 을 해주는데, 이는 문자열의 마지막에 불필요한 공백을 빼주기 위한 코드라고 한다.


정리

split() vs split(" ")

- split() : 공백을 무시

- split(" ") : 모든 공백을 처리