이상한 문자 만들기
문제 설명
문자열 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(" ")))
* 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/
'코딩테스트 > Programmers' 카테고리의 다른 글
[코딩테스트/Programmers] 12_문자열 내림차순으로 배치하기 (Lv1.) (0) | 2022.01.03 |
---|---|
[코딩테스트/Programmers] 11_문자열 내 p와 y의 개수 (Lv1.) (0) | 2022.01.03 |
[코딩테스트/Programmers] 09_약수의 합 (Lv1.) (0) | 2022.01.03 |
[코딩테스트/Programmers] 08_핸드폰 번호 가리기 (Lv1.) (0) | 2022.01.03 |
[코딩테스트/Programmers] 07_서울에서 김서방 찾기 (Lv1.) (0) | 2021.12.26 |