자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다.
📋 문제
N명의 학생의 점수가 입력되면 각 학생의 등수를 입력한 순서대로 출력한다.
같은 점수가 입력될 경우 높은 등수로 동일 처리한다.
예를 들어 92, 92, 92, 89, 70이 입력으로 들어온다면 출력은 1, 1, 1, 4, 5 이다.
👉 입력
N개의 정수가 입력된다.
👈 출력
각 학생의 등수가 순서대로 출력된다.
📝 풀이
function solution(arr) {
let answer = Array(arr.length).fill(1);
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length; j++) {
if (arr[i] < arr[j]) answer[i]++;
}
}
return answer;
}
let arr = [87, 89, 92, 100, 76];
console.log(solution(arr));
answer라는 배열을 만드는데 길이는 입력받은 배열의 길이와 같고 모두 1로 초기화한다.
이중 for문을 돌며 조합의 경우의 수를 모두 구한 후 값을 비교해 자신보다 큰 값이 있으면 answer[i]에 1씩 더한다.
+) answer = Array.from({length: arr.length}, () => 1) 이렇게 해도 길이가 arr과 같은 1로 초기화된 배열이 생성된다.
function solution(arr) {
let answer = arr.map((i) => arr.filter((j) => i < j).length + 1);
return answer;
}
let arr = [87, 89, 92, 100, 76];
console.log(solution(arr));
map과 filter를 이용해 더 짧은 구문으로도 구현이 가능하다.
filter로 현재 자신보다 큰 수들을 골라낸 후 이들의 개수에 1을 더해 map으로 새로 조합된 배열을 만든다.
'Algorithm > JavaScript' 카테고리의 다른 글
[배열탐색] 봉우리 (0) | 2021.12.09 |
---|---|
[배열탐색] 격자판 최대합 (0) | 2021.12.09 |
[배열탐색] 점수계산 (0) | 2021.12.09 |
[배열탐색] 가위바위보 (0) | 2021.12.09 |
[배열탐색] 보이는 학생 (0) | 2021.12.09 |
댓글