Day8 Coding Test

ming·2022년 12월 4일
0
post-thumbnail

1. 배열 자르기

풀이

function solution(numbers, num1, num2) {
    return numbers.slice(num1, num2 + 1)
}

배열을 복사해주는 slice함수를 사용해서 풀이했다.
slice에 매개변수 num1,num2로 numbers 배열에 범위만큼 복사를 해주었다.
하지만 slice는 end index직전까지 반환해주기 때문에 +1을해서 우리가 원하는 만큼의 범위로 반환하게 만들어 주었다.

2. 외계행성의 나이

풀이

function solution(age) {
    var answer = '';
    let ageStr = age.toString();
    
    let cnt = 0;
    while(cnt < ageStr.length){
        answer = answer + String.fromCharCode(ageStr[cnt].charCodeAt(0) + 49);
        cnt = cnt + 1;
    }
    return answer
}

이번 문제는 좀 어려웠다.
숫자를 문자열로 변경해본적도 없고 들어본 함수도 없기 때문이였다.
검색을 하면서 charCodeAt()함수를 알게 되었는대,
문자열중 하나를 선택하여 아스키코드 번호로 변환해주는 함수이며,
fromCharCode()함수는 아스키코드르 문자열로 변환해주는 함수이다.

아스키코드에서
숫자 0 은 48을
소문자 a 는 97을 나타낸다.

이때 서로의 차이는 49이며 이 값으로 우리가 원하는
나이를 문자열로 변경 할 수 있다.

3.진료순서 정하기

풀이

function solution(emergency) {
    let sorted = emergency.slice().sort((a,b)=>b-a);
    return emergency.map(res => sorted.indexOf(res)+1);
}

배열의 값들중 숫자가 높을수록 해당 index에 순위를 만들어야하는 문제이다.

우선 높은숫자순으로 만든 배열을 slice로 복제한 후,
map을 통하여 emergency에 값들의 순위를 sorted 배열에서 indexOf로 위치를 찾고 배열은 길이를 0부터 세기 때문에 +1을 해주어서 해당 값의 우선순위를 알려주는 배열을 만들어 return 해주었다.

4.순서쌍의 개수

풀이

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

수학과 관련된 문제라 이것도 난항을 겪었다..
수학에 따로 해당 로직이 있는건진 모르지만,
반복문을 돌려서 매개변수 n을 i로 나누면서 나머지가 0일때
해당하는 값을 배열에 넣어주었고,
그 배열의 길이가 매개변수 n의 순서쌍의 개수를 나타낸다.

profile
프론트엔드 개발자 공부중

0개의 댓글