[프로그래머스 자바스크립트] 코딩테스트 입문 Day 8 풀어보기

2024. 2. 13. 16:21·Algorithm/Programmers(JavaScript)

배열 자르기

https://school.programmers.co.kr/learn/courses/30/lessons/120833

function solution(numbers, num1, num2) {
    let answer = [];
    let cnt = 0;
    
    // num1부터 num2까지 numbers 배열의 값을 answer 배열에 넣어준다.
    for(let i = num1; i <= num2; i++) {
        answer[cnt] = numbers[i];
        cnt++;
    }
    
    return answer;
}

 

 

splice를 활용해서 풀 수도 있다.

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

이 함수는 배열 **numbers**를 수정하고 해당 일부를 반환하는 역할을 합니다. 여기서 splice 메서드는 배열을 수정하고 삭제된 요소를 새로운 배열로 반환합니다.

  • numbers: 처리할 배열
  • num1: 시작 인덱스
  • num2: 종료 인덱스

splice 메서드는 첫 번째 매개변수로 전달된 인덱스(num1)부터 두 번째 매개변수로 전달된 갯수(num2 - num1 + 1)만큼의 요소를 배열에서 제거하고, 이를 새로운 배열로 반환합니다.

 

따라서 solution 함수는 주어진 배열 numbers에서 num1부터 num2까지의 부분 배열을 반환합니다. 주의할 점은 이 함수가 원래 배열을 수정하고, 반환값은 삭제된 부분 배열이 됩니다.


외계행성의 나이

https://school.programmers.co.kr/learn/courses/30/lessons/120834

function solution(age) {
    
    // age를 문자열로 변경
    age_string = age.toString();
    
    answer = '';
    
    // 문자열의 한 글자를 다시 숫자로 바꾸고 그 숫자에 97을 더해준다.
    // 예시: 1에 97을 더해주면 98이 되고, b의 아스키코드 값은 98이므로
    // fromCharCode를 이용하여 98(아스키코드 값)을 다시 문자열로 바꿔주면
    // 결과적으로는 1 -> b가 된다!
    for(let i = 0; i < age_string.length; i++) {
        answer += String.fromCharCode(Number(age_string[i]) + 97);
    }
    
    
    return answer;
}

진료순서 정하기

https://school.programmers.co.kr/learn/courses/30/lessons/120835

function solution(emergency) {
    // 딕셔너리 생성
    let dict = {};
    
    // emergency가 [3, 76, 24]였다면
    // dict[3] = 3;
    // dict[76] = 2;
    // dict[24] = 1; 이된다.
    for (let i = 0; i < emergency.length; i++) {
        dict[emergency[i]] = emergency.length - i;
    }
    
    // 딕셔너리의 key 값을 기준으로 오름차순 정렬
    let sortedDict = Object.fromEntries(
        // 딕셔너리의 키-값 쌍을 배열로 변환하고, 키를 기준으로 오름차순 정렬
        Object.entries(dict).sort(([a], [b]) => a - b)
    );
    
    let answer = [];
    
    // 정렬된 딕셔너리의 값들을 배열에 저장
    let values = Object.values(sortedDict);
    for (let i = 0; i < values.length; i++) {
        answer[i] = values[i];
    }
    
    return answer;
}

 

 

다른 사람이 푼 더 좋은 풀이

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

주어진 JavaScript 함수는 다음과 같은 동작을 수행합니다:

  1. emergency.slice(): emergency 배열의 복사본을 만듭니다.
  2. .sort((a, b) => b - a): 복사본을 내림차순으로 정렬합니다.
  3. emergency.map(v => sorted.indexOf(v) + 1): 원래 배열 emergency의 각 요소에 대해 정렬된 배열 sorted에서의 인덱스를 찾아 1을 더합니다.

예를 들어, emergency 배열이 [3, 76, 24]라면:

  1. sorted는 [76, 24, 3]이 됩니다.
  2. emergency.map(v => sorted.indexOf(v) + 1)은 각 요소에 대해 정렬된 배열에서의 인덱스를 찾아 1을 더한 결과인 [3, 2, 1]을 반환합니다.

이 함수는 원래 배열의 각 요소가 정렬된 배열에서 몇 번째로 큰지를 나타내는 새로운 배열을 반환합니다.


순서쌍의 개수

https://school.programmers.co.kr/learn/courses/30/lessons/120836

function solution(n) {
    let cnt = 0;
    
    // n을 어떤 수로 나눴을 때 나머지가 0이면 카운트를 1씩 더해준다.
    for(let i = 1; i <= n; i++) {
        if(n % i == 0){
            cnt++;
        }
    }
    
    return cnt;
}

 

 

이렇게 풀 수도 있다.

function solution(n) {
      return Array(n).fill(1).map((v,idx) => v + idx).filter(v => n % v === 0).length
}
  1. Array(n).fill(1): 길이가 n이고 값이 1인 배열을 생성합니다.
  2. .map((v, idx) => v + idx): 각 요소에 대해 현재 요소의 값과 인덱스를 더한 값을 반환하는 새로운 배열을 생성합니다. 이로써 배열은 [1, 2, 3, ..., n]이 됩니다.
  3. .filter(v => n % v === 0): 배열에서 n의 약수인 요소들만 남깁니다.
  4. .length: 약수인 요소들의 개수를 반환합니다.

따라서 이 함수는 주어진 숫자 n의 약수의 개수를 반환합니다.

저작자표시 비영리 변경금지 (새창열림)

'Algorithm > Programmers(JavaScript)' 카테고리의 다른 글

[프로그래머스 자바스크립트] '폰켓몬' 풀어보기  (2) 2024.07.16
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 9,10 풀어보기  (1) 2024.02.14
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 6,7 풀어보기  (2) 2024.02.13
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 4,5 풀어보기  (2) 2024.02.10
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 1,2,3 풀어보기  (1) 2024.02.10
'Algorithm/Programmers(JavaScript)' 카테고리의 다른 글
  • [프로그래머스 자바스크립트] '폰켓몬' 풀어보기
  • [프로그래머스 자바스크립트] 코딩테스트 입문 Day 9,10 풀어보기
  • [프로그래머스 자바스크립트] 코딩테스트 입문 Day 6,7 풀어보기
  • [프로그래머스 자바스크립트] 코딩테스트 입문 Day 4,5 풀어보기
퀵차분
퀵차분
Web Developer 🥐
  • 퀵차분
    QC's Devlog
    퀵차분
  • 전체
    오늘
    어제
    • 분류 전체보기 (178)
      • Frontend (31)
      • Fedify (4)
      • Study (42)
        • NestJS (2)
        • Node.js (3)
        • Modern JS Deep Dive (13)
        • SQL (1)
        • Network (1)
        • 프롬프트 엔지니어링 (4)
        • 인공지능 (9)
        • 시스템프로그래밍 (11)
        • 선형대수학 (1)
      • Intern (4)
      • KUIT (21)
      • Algorithm (48)
        • Baekjoon(C++) (26)
        • Programmers(JavaScript) (22)
      • 우아한테크코스(프리코스) (4)
      • Project (10)
        • crohasang_page (3)
        • PROlog (4)
        • Nomadcoder (2)
      • 생각 (4)
      • Event (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    타입스크립트
    프로그래머스 자바스크립트
    리액트
    티스토리챌린지
    인공지능
    react
    fedify
    알고리즘
    프로그래머스
    오블완
    시스템프로그래밍
    KUIT
    next.js
    음악추천
    typescript
    자바스크립트
    javascript
    프론트엔드
    백준
    HTML
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
퀵차분
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 8 풀어보기
상단으로

티스토리툴바