코딩테스트 연습 14: [프로그래머스] 이상한 문자 만들기

gyomni·2022년 1월 23일
0

Algorithm

목록 보기
14/33
post-thumbnail

출처 : 프로그래머스
사용 언어 : 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() : 소문자로 변환

profile
Front-end developer 👩‍💻✍

0개의 댓글