프로그래머스 코딩테스트



문제 1. 인덱스 바꾸기


문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.

function solution(my_string, num1, num2) {
    var answer = '';
    my_string = my_string.split('')
    let temp = '';
    
    temp = my_string[num1];
    my_string[num1] = my_string[num2];
    my_string[num2] = temp;
    
    answer = my_string.join('')
    
    return answer;
}

설명: 일단 인덱스 값을 구하기 위해 .split()를 사용해 문자열을 배열로 만들어주었다. 이후 빈 공간 temp를 사용해 my_string[num1]값을 저장하고, 그 자리에 my_string[num2] 값을 넣었다. num2 인덱스 자리에는 temp를 넣어 교체한 뒤, .join()을 사용해 문자열로 합쳐주었다.


문제 2. 약수 구하기


정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.

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

설명: 오름차순으로 return 해달라고 요청했으니, i를 0부터 시작한다. 만약 내림차순으로 정렬할 생각이라면 n부터 시작하면 된다.


문제 3. 배열 회전시키기


정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.

function solution(numbers, direction) {
    var answer = [];
    
    if (direction === 'left') {
        let first = numbers.shift();
        numbers.push(first);
    } else {
        let last = numbers.pop();
        numbers.unshift(last);
    }
    
    answer = numbers
    
    return answer;
}

설명: 처음에는 반복문을 사용해서 일일이 다 돌려줬는데, 찾아보니 .shift()와 unshift를 사용하면 편리해졌다.


문제 4 - 외계행성의 나이


우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, …, j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.

function solution(age) {
    var answer = '';
    let ABC = {0: 'a', 1: 'b', 2:'c' , 3: 'd', 4: 'e', 5: 'f', 6: 'g',7: 'h', 8: 'i', 9: 'j'}
    let nai = Array.from(String(age), Number);
    
    for (let i = 0; i<nai.length; i++){
        answer += ABC[nai[i]];
    }
    
    return answer;
}

설명: 일단 어떤 특정한 숫자일 때 해당하는 알파벳이 있다는 건, 객체를 사용해 key값을 줄 수 있다는 것이다. 그러니 객체를 만들어 각 숫자에 맞는 알파벳을 배정한 뒤 반복문을 돌려 합쳐준다.


문제 5 - 숫자 찾기


정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.

function solution(num, k) {
    var answer = 0;
    let numArr = Array.from(String(num), Number);
    
    if(numArr.indexOf(k)!== -1){
        answer = numArr.indexOf(k)+1
    } else {
        answer = -1
    }
    return answer;
}

설명: 일단 num을 배열로 만들어버린 뒤에 indexOf()를 사용해 값을 찾았다. indexOf()는 원하는 값이 없을 경우 -1을 내놓는데, 문제에서는 index+1한 값을 원하므로 if문을 사용해 구분해준다.


Jeong

예술, 코딩, 그리고 삶