본문 바로가기
기초다지기/JS 코딩테스트

javaScript 정수 배열 조건문

by 김빵그 2023. 11. 8.

문제

학생들의 등수를 담은 정수배열 rank 와 대회 참여 가능 여부가 담긴 bool 배열 attendance가 매개변수로 주어질 때
등수가 높은 순서대로 3명을 뽑아 식을 구하시오

나의 풀이 

function solution(rank, attendance) {
    var arr = rank.filter((n, i) => attendance[i]).sort((a, b) => a - b).slice(0, 3) ;
    return 10000 * rank.indexOf(arr[0]) + 100 * rank.indexOf(arr[1]) + rank.indexOf(arr[2]);
}
  • arr 
    • rank 순서 배열에서 attendancce bool 값을 사용해 새로운 배열을 생성한다 
    • 오름차순으로 정렬하고 상위 3개 요소만 남겨둠ㅁ
    • indexOf를 사용하여 해당 인덱스 값으로 계산식

다른 풀이

function solution(rank, attendance) {
  const [a, b, c] = rank
    .map((r, i) => [r, i])
    .filter(([_, i]) => attendance[i])
    .sort(([a], [b]) => a - b);
  return 10000 * a[1] + 100 * b[1] + c[1];
}
  • map 
    • rank 배열의 요소를 [r, i ] 형태의 배열로 매핑하고 filter를 사용하여 attendance 해당 위치만 남겨둔다 
    • sort를 사용하여 [a] 값에따라 배열 오름차순으로 정렬
  •