티스토리 뷰

1Day 1Algorithm

[DAY 18] 이상한 문자 만들기

walk_through_me 2019. 10. 18. 21:41

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

 

 

코딩테스트 연습 - 이상한 문자 만들기 | 프로그래머스

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 제한 사항 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다. 입출력 예 s return try hel

programmers.co.kr

 

 

풀이

function solution(s) {
    var answer = '';
    let words = s.toUpperCase().split(' ');
    
    for(let i = 0; i < words.length; i++) {
        let word = words[i].split('');
        let newWord = word.map(function(w, index){
            if(index % 2 == 0) {
                return w
            } else {
                w = w.toLowerCase();
                console.log(w)
                return w;
            }
        }).join('');
        words[i] = newWord;
    }
    answer = words.join(' ');
    return answer;
}

1. 문자열을 모두 대문자로 변환하고, 공백을 기준으로 나눈 배열을 만들어서 words 변수에 담아줌

2. 배열을 돌며 배열 안의 단어들을 또 배열로 만들어줌

3. map()을 이용하여 홀수 인덱스인 알파벳을 toLowerCase()로 변환해준 뒤, join()으로 다시 문자열로 변환해줌

4. 기존 배열 문자열을 변환한 문자열로 대체함

5. 배열을 join()으로 다시 합쳐서 반환함

 

 

다른 사람의 풀이

function toWeirdCase(s){
  return s.toUpperCase().replace(/(\w)(\w)/g, function(a){return a[0].toUpperCase()+a[1].toLowerCase();})
}

받은 문자열을 대문자로 변환 하고, replace()를 이용함. 이때 두번째 파라미터를 함수로 처리함

 

var newStr = str.replace(regexp|substr, newSubstr|function)

function (replacement)
주어진 regexp 또는 substr에 일치하는 요소를 대체하는 데 사용될 새 하위 문자열을 생성하기 위해 호출되는 함수. 
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함