이상한 문자 만들기

 

 문제 설명

 

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

 

 제한 사항

 

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

 

 입출력 예

 

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

 

 Python 코드

 

def solution(s):
    new_list = []				 # 문자열을 새로 만들어야 하니 빈 리스트 생성
    words_list = s.split(" ")     # 받은 문자열을 단어별(스페이스 기준)으로 split해서 list에 넣어주기
    for word in words_list:		 # 단어 리스트에 있는 단어들 반복할 때 그 단어 길이 만큼 반복문
        new_words = ""	             # 단어가 반복할 때 맞춰서 빈 string이 채워지는거니까 여기에 맞게 빈 String 만들기
        for i in range(len(word)): # 단어 리스트에 있는 단어들 반복할 때 그 단어 길이 만큼 반복문
            if i % 2:
                new_words += word[i].lower() # 단어가 짝수면 소문자로 바꿔서 빈 stirng에 붙여주기
            else:
                new_words += word[i].upper() # 단어가 홀수면 대문자로 바꿔서 빈 stirng에 붙여주기
        new_list.append(new_words)     # 단어 하나가 반복이 끝나면 빈 list에 새로운 string 붙여주기
    return ' '.join(new_list)          # 새로 채워진 list new_words에 있는 요소들 붙여서 return (스페이스 중간에 넣어주기)
def toWeirdCase(s):
    # 함수를 완성하세요
    return ' '.join([''.join([c.upper() if i % 2 == 0 else c.lower() for i, c in enumerate(w)]) for w in s.split(' ')])


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

* 참고 링크 : https://velog.io/@joygoround/test-%EC%9D%B4%EC%83%81%ED%95%9C-%EB%AC%B8%EC%9E%90-%EB%A7%8C%EB%93%A4%EA%B8%B0-%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

* upper ( ) 함수 : a를 대문자 문자열로 변환

* lower ( ) 함수 : b를 소문자 문자열로 변환

a = "hi"
print("a를 대문자로:", a.upper())

b = "HI"
print("b를 소문자로:", b.lower())

* split ( ) 함수 : 문자열 나누기

a = "Life is too short"
a.split()
# result : ['Life', 'is', 'too', 'short']

* 참고 링크 : https://wikidocs.net/13

 

 C++ 코드

#include <string>

using namespace std;

string solution(string s) {
    int idx = 0;
    
    for(int i=0; i<s.size(); i++){
        
        if(s[i] == ' '){
            idx=0;
            continue; 
        }
        
        if(idx%2){
            if(s[i] <= 'Z') s[i]+=32;
        }
        else{
            if(s[i] >= 'a') s[i]-=32;  
        }
        idx++;
    }
    
    return s;
}

 

#include <string>

using namespace std;

string solution(string s) {
    int idx = 0;
    
    for(int i=0; i<s.size(); i++){
        
        if(s[i] == ' '){
            idx=0;
            continue; 
        }
       
        if(idx%2){
            s[i] = tolower(s[i]);
        }
        else{
            s[i] = toupper(s[i]); 
        }
        idx++;
    }
    
    return s;
}

* 참고 링크 : https://iingang.github.io/posts/Programmers-12930/

+ Recent posts