문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
s | return |
---|---|
"try hello world" | "TrY HeLlO WoRlD" |
function solution(s) {
const words = s.split(" ");
return words.map((word) => {
var answer = "";
for (let i = 0; i < word.length; i++) {
if (i % 2) {
answer += word[i].toLowerCase();
} else {
answer += word[i].toUpperCase();
}
}
return answer;
}).join(" ");
}
시저암호 만드는 것과 비슷하게 주어진 문자열의 소문자/대문자를 바꾸는 문제였다.
이번에도 map을 이용해 문제를 풀었다.
길이를 줄여보기 위해 i % 2 === 0
이라던가 i % 2 !== 0
이런 부분을 최대한 줄이고 간략하게 i % 2
로 줄였다.
처음엔 더 줄일게 없나 찾다가 예제만 보고 toLowerCase는 안붙여도 되겠지 싶어서 아무생각없이 뺐다가 나중에 호다닥 추가!
function toWeirdCase(s){
//함수를 완성해주세요
return s.toUpperCase().replace(/(\w)(\w)/g, function(a){return a[0].toUpperCase()+a[1].toLowerCase();})
}
이런 정규식 표현을 볼 때 마다 정말 실전에서도 써먹는 것인지 궁금증이 들기 시작했다..!
아직은 신기하기만 한 풀이방법!
뭔가 암호?나 문자열 관련해서 문제가 나온다면 왠지 split과 join 은 단골로 나오는 느낌!