느려도 한걸음씩

Lv.0 - 전국 대회 선발 고사 본문

알고리즘/프로그래머스

Lv.0 - 전국 대회 선발 고사

hoj0806 2024. 5. 16. 01:13

문제



풀이코드

const solution = (rank, attendance) => {
    let arr = rank.filter((item, index) => attendance[index]===true).sort((a, b) => a- b)
    return (rank.indexOf(arr[0]) * 10000) + (rank.indexOf(arr[1]) * 100) + rank.indexOf(arr[2])
}

코드 설명

우선 rank 배열을 filter 메서드를 이용해 출석여부가 담긴 배열을 index로 비교해 그 인덱스에서 true인값만 남겨놓고 1, 2, 3등 등수를 매기기 위해 sort 메서드를 통해 오름차순으로 정렬해준다 그뒤에 rank 배열 indexOf 메서드를 통해 그 학생의 번호가 몇번인지 찾아주고 문제에 따라 1등학생의 번호 * 10000 + 2등학생의 번호 * 100 + 3등학생의 번호를 리턴해준다