Level 0) 배열, 구현, 수학

Doozuu·2023년 1월 3일
0

프로그래머스 (JS)

목록 보기
9/183

📌 문제 1. 배열 자르기

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

⭐️ slice( )와 splice( )의 차이점

slice : 원본 배열을 해치지 않고 새로운 배열을 만든다.
splice : 원본 배열을 수정, 교체한다.

slice(시작index, 종료index)

: 시작 index 부터 종료 index "전"까지의 값을 반환한다.
⚠️ 주의 : 종료 index는 포함하지 않음!!
index가 음수인 경우는 뒤에서 부터 추출하는 것.

splice(시작index, 제거갯수, 추가요소)

자세한 예시는 아래 사이트 참조
https://im-developer.tistory.com/103



📌 문제 2. 외계행성의 나이

function solution(age) {
     return String(age).split('').map(n => String.fromCharCode(Number(n) + 97)).join('')
}

숫자는 split할 수 없다.
따라서 String( )을 통해 문자열로 바꾸어준 뒤 split 해야 한다.

⭐️ 숫자를 문자열로 바꾸는 방법

  1. String(숫자)
  2. 숫자.toString()

⭐️ String.fromCharCode( )

: 숫자를 문자로 변환해주는 함수(ASCII 코드)
97부터 "a"이다.
예시
String.fromCharCode(97) === "a"
String.fromCharCode(98) === "b"



📌 문제 3. 진료 순서 정하기 (조금 어려움)

숫자를 정렬해서 index를 구하면 각각의 순서는 구할 수 있는데 원래 배열에 어떻게 적용을 시켜야할 지가 어려웠다.

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

해결 방법

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

1. 배열 깊은 복사

sort( )는 기존 배열을 변경하여 요소를 정렬시킨다. 따라서 기존 배열을 해치지 않고 복사하기 위해 spread operator를 통해 깊은 복사해준다.

참고 ) spread operator가 아닌 slice( )로도 복사본을 만들 수 있다.

2. "기존 배열"에 map을 적용하여 정렬한 값의 index 값으로 대체시켜준다.

(기존 배열에 map 하는걸 생각하지 못했음.)



📌 문제 4. 순서쌍의 개수

약수의 개수 풀이와 같다.

function solution(n) {
    var answer = 0;
    for(i=1;i<=n;i++){
        if(n % i === 0){
            answer++;
        }
    }
    return answer;
}
profile
모든게 새롭고 재밌는 프론트엔드 새싹

0개의 댓글