프로그래머스 코딩테스트



문제 1. 모음 제거


영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

function solution(my_string) {
    var answer = '';
    var Arr = ['a', 'e', 'i', 'o', 'u'];
    var pattern = new RegExp(Arr.join('|'), 'g');
    answer = my_string.replace(pattern, '');

    return answer;
}
설명: Arr이라는 배열에 모음을 집어넣는다. 이후 각 항목을 ‘ ‘로 연결하여 정규 표현식 패턴 조건을 나타낸다. ‘g’ 플래그는 전역 검색을 의미한다. 이후 replace를 이용해 pattern과 일치하는 부분을 제거하고 answer에 할당한다.


문제 2. n의 배수 고르기


정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.

function solution(n, numlist) {
    var answer = [];
    for(let i=0; i< numlist.length; i++){
        if(numlist[i] % n ===0){
            answer.push(numlist[i])
        }
    }
    return answer;
}

설명: numlist를 n으로 나누었을 때 나머지가 0이 것을 answer에 push하였다.


문제 3. 가위 바위 보


가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.

function solution(rsp) {
    var answer = '';
    var Arr = rsp.split('');
    for (let i=0; i< Arr.length; i++){
        if(Arr[i]=='2'){
            answer += '0'
        }
        
        if(Arr[i]=='0'){
            answer += '5';
        }
        
        if(Arr[i]=='5'){
            answer += '2'
        }
    }
    return answer;
}

설명: 일단 rsp를 split으로 쪼개어 배열에 입력한다. 이 배열로 반복문을 돌려 해당하는 숫자마다 ‘문자열’을 더해준다. 여기서 문자열을 더해주지 않으면 숫자들의 합이 나오니 유의하자. switch 문을 사용할 수도 있다.


문제 4 - 대문자와 소문자


문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.

function solution(my_string) {
    var answer = '';

    for (let i = 0; i < my_string.length; i++) {
        var currentChar = my_string[i];
        if (currentChar === currentChar.toUpperCase()){
            answer += currentChar.toLowerCase();
        } else {
            answer += currentChar.toUpperCase();               }
        }
    return answer;
}

설명: 일단 currentChar이라는 변수에 my_tring[i]를 저장한다. currentChar이 대문자면 소문자로, 그렇지 않으면 대문자로 바꾸어 answer에 값을 더해준다. 대문자로 바꿔주는 메서드는 .toUpperCase(), 소문자로 바꾸는 것은 .toLowerCase()이다.


문제 5 - 암호 해독


군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다.

암호화된 문자열 cipher를 주고받습니다. 그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다. 문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.

function solution(cipher, code) {
    var answer = '';
     for (var i = code - 1; i < cipher.length; i += code) {
        answer += cipher[i];
    }
    return answer;
}

설명: 배열의 인덱스는 0에서부터 시작하기 때문에 i의 초기값은 code-1로 설정한다. 배수를 물어봣으므로 i의 증가 폭은 code만큼이어야 한다.


Jeong

예술, 코딩, 그리고 삶