출처 : 프로그래머스
사용 언어 : JavaScript
function solution(s) {
var answer = '';
return answer;
}
function solution(s) {
var answer = s.split('');
for(let i=0;i<answer.length;i++){
if(answer[i]===''){
return '';
}
i%2 ? answer[i].toLowerCase() : answer[i].toUpperCase();
}
return answer;
}
알파벳을 각각 분리해서,
배열 인덱스가 짝수면 대문자로 홀수면 소문자로 toUpperCase()
,toLowerCase()
를 이용해서 변환한 다음,
join
으로 문자열을 합치려고 했는데,,,, 문자 변환이 되지 않는다 ㅜㅜㅜ
그러고보니 홀짝의 기준도 문자열 전체로 해 놓았다..
공백 기준으로 나누는 것인데!!
function solution(s) {
let a =s.split(' ');
let answer='';
for(let i=0; i<a.length; i++){
let count=0;
for(let j=0; j<a[i].length; j++){
if(count%2===0){
answer += a[i][j].toUpperCase();
}else{
answer+= a[i][j].toLowerCase();
}
count++;
}
if(i===a.length-1){
answer+= '';
}else{
answer+=' ';
}
}
return answer;
}
생각을 정리해서 다시 코드를 짜봤다
공백 기준으로 문자를 나눠 다시 반복문을 돌아가게 했다 !!
function toWeirdCase(s){
return s.toUpperCase().replace(/(\w)(\w)/g, function(a){return a[0].toUpperCase()+a[1].toLowerCase();})
}
✨ 정규표현식 특수 문자
: 정규 표현식은 주어진 패턴에 일치하는 문자열을 찾기 위해 하용하는 검색 패턴
(\w)
: 단어 문자(알파벳,숫자,밑줄) 일치
참고 블로그 : 링크텍스트
✨replace()
: 어떤 패턴에 일치하는 일부 또는 모든 부분이 교체된 새로운 문자열을 반환.
패턴은 문자열이나 정규식(RegExp)이 될 수 있으며,
교체 문자열은 문자열이나 모든 매치에 대해서 호출된 함수일 수 있다.
pattern이 문자열 인 경우, 첫 번째 문자열만 치환이 되며 원래 문자열은 변경되지 않는다.
->var newStr = str.replace(regexp|substr, newSubstr|function)
이번 문제는 생각할 시간이 좀 필요했다....ㅠ3ㅠ 하지만 풀었으니,,ㅎ 실행속도도 빨랐다!
다른 사람 풀이를 보며 정규표현식을 이런 식으로 쓸 수 있구나를 배운다! 하지만 속도는 좀 느린 것 같다.
a.toUpperCase()
: 대문자로 변환
a.toLowerCase()
: 소문자로 변환