728x90
반응형
24년 12월 12일
해결한 문제 갯수: 10
문제 설명
문제 분석
- 학생들의 순위(rank)와 참가 가능 여부(attendance)를 기반으로 특정 조건을 만족하는 학생들을 선발하고, 그 결과를 계산하는 문제입니다.
- rank: 각 학생의 시험 점수 순위가 적힌 배열
- attendance: 각 학생의 참가 가능 여부(true/false)가 적힌 배열
- 참가 가능한 학생들 중 순위가 가장 높은 3명을 선발합니다.
- 선발된 학생들의 인덱스를 사용하여 10000a + 100b + c 계산합니다.
접근: 메소드 체이닝
function solution(rank, attendance) {
return attendance
.map((el, i) => el ? i : '')
.filter(el => el !== '')
.sort((a, b) => rank[b] - rank[a])
.slice(-3)
.reduce((a, c, i) => a + c * Math.pow(100, i))
}
1) 참석 가능한 학생 찾기
: attendance 배열을 순회하며 참석 가능한 학생의 인덱스를 반환합니다.
: 참석 불가능한 학생의 경우, 빈 문자열('')을 반환합니다.
2) 배열의 불필요한 요소 제거
: 배열에서 falsy 값("")을 제거합니다.
3) 순위별 정렬
: sort()를 사용해 학생들의 순위를 기준으로 정렬합니다.
4) 상위 3명 선택
: 배열에서 상위 3명을 선택합니다.
5) 최종 계산
- 선택된 3명의 인덱스를 사용해 최종 값을 계산을 합니다.
- Math.pow(100, i)는 i값에 따라 다음과 같은 값을 반환:
- i = 0 : Math.pow(100, 0) = 1
- i = 1 : Math.pow(100, 1) = 100
- i = 2 : Math.pow(100, 2) = 10000
728x90
반응형
'자료구조 및 알고리즘 > JavaScript Practice' 카테고리의 다른 글
[프로그래머스] 배열의 길이를 2의 거듭제곱으로 만들기 (1) | 2024.12.14 |
---|---|
[프로그래머스] 정수를 나선형으로 배치하기 (0) | 2024.12.13 |
[프로그래머스] 왼쪽 오른쪽 (1) | 2024.12.11 |
[프로그래머스] 배열 만들기 5 (0) | 2024.12.11 |
[프로그래머스] 배열의 길이에 따라 다른 연산하기 (0) | 2024.12.09 |