※ 문제
N(1<=N<=100)명의 학생의 국어점수가 입력되면 각 학생의 등수를 입력된 순서대로 출력하는 프로그램을 작성하세요.
▣ 입력설명
첫 줄에 N(3<=N<=1000)이 입력되고, 두 번째 줄에 국어점수를 의미하는 N개의 정수가 입력된다. 같은 점수가 입력될 경우 높은 등수로 동일 처리한다. 즉 가장 높은 점수가 92점인데 92점이 3명 존재하면 1등이 3명이고 그 다음 학생은 4등이 된다.
▣ 출력설명
입력된 순서대로 등수를 출력한다.
▣ 입력예제 1
5
87 89 92 100 76
▣ 출력예제 1
4 3 2 1 5
※ 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(arr) {
let answer = Array.from({length : arr.length}, () => 1);
let n = arr.length;
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
if (arr[i] < arr[j]) {
answer[i]++;
}
}
}
return answer;
}
let arr = [87, 89, 92, 100, 76];
console.log(solution(arr));
</script>
</body>
</html>
※ 설명
배열의 크기를 Array.from()을 사용하여 arr.length만큼 설정하고 모든 index의 값을 1로 초기화시켜 놓는다.
이후 arr.length를 변수 n에 할당하고 이중 for문을 작성하여 현재 값이 각 item값 보다 클 경우 해당 index의 값을 1씩 더해나가도록 한다.
※ 핵심
- 배열의 크기 및 모든 값 초기화 시키는 법
let arr = Array.from({length: n}, () => 1);
// 배열의 크기를 arr.length만큼 설정하고 모든 값을 1로 초기화한다.
해당 내용은 김태원님의 자바스크립트 알고리즘 문제풀이 강의를 듣고 작성한 글입니다.
'🤯 코딩테스트 > Javscript' 카테고리의 다른 글
[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 02 - 봉우리 (0) | 2022.01.10 |
---|---|
[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 02 - 격자판 최대합 (0) | 2022.01.10 |
[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 02 - 점수계산 (0) | 2022.01.10 |
[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 02 - 가위 바위 보 (0) | 2022.01.10 |
[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 02 - 보이는 학생 (0) | 2022.01.10 |