Dragonball Online Goku Hand
본문 바로가기
알고리즘 도장깨기

프로그래머스 Lv.1 "이상한 문자 만들기"

by 별의 코비 2022. 11. 23.
728x90

🔥 Programmers Lv.1 : 이상한 문자 만들기


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

📎 조건 :
∙ 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
∙ 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.


👉🏻 My answer

function solution(s) {
    let answer = '';
    let words = s.split(' ');
    
    for (let i = 0; i < words.length; i++) {
        for(let j = 0; j < words[i].length; j++) {
            if(j % 2 == 0) {
                answer += words[i][j].toUpperCase();
            } else {
                answer += words[i][j].toLowerCase();
            }
        }
        if (i < words.length -1) {
            answer += ' ';
        }
    }
    return answer;
}
01. 단어별로 문자열 s를 split메서드를 통해 나누어줍니다.
02. 단어별로 반복문을 돌린 후, 짝수일 때는 대문자로 바꾸어주는 메서드를 이용하여 대문자로 바꿔주고, 홀수일 때는 소문자로 바꿔주는 메서드를 이용하여 소문자로 바꿔줍니다.
03. 단어 사이 공백은 words의 길이를 활용하였습니다. 길이보다 작은 구간에는 공백을 추가시켜주었습니다.


👉🏻 Another ways

function toWeirdCase(s){
    return s.toUpperCase().replace(/(\w)(\w)/g, function(a){return a[0].toUpperCase()+a[1].toLowerCase();})
}
: 1차 반응 : 예? : 2차 반응 : ㅇ? : 3차 반응 : ? ㅎ
: /(\w)(\w)/g : 대소문자 구분 없이 두 글자씩 선택
: 문자열을 대문자로 변환한 뒤, 첫번째 글자는 대문자로, 두번째 글자는 소문자로 변경하는 함수를 만들어주었습니다.

댓글