등수구하기
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
<!--my solution-->
<html>
<head>
<meta charset="UTF-8">
<title>출력결과 - 섹션2 - 4 - 등수 구하기</title>
</head>
<body>
<script>
function solution(arr) {
// 등수구하기
// 주어지는 값 점수의 배열
// 구해야하는 것 각 점수들의 등수
let n = arr.length
let answer = Array.from({length : n}, () => 1); //배열의 길이가 5인 배열 생김 1차원 배열 초기화 방법
// 0등은 존재 X
for (let i = 0; i < n; i++) { // 서로 비교해야하기 때문에 이중 for 문
for(let j = 0; j < n; j++) {
if(arr[j]> arr[i]) {
answer[i]++;
}
// 처음에 전부 1로 초기화 한 후 자기보다 큰 애를 만나면 ++ 시켜주면 됨
}
} return answer;
}
const scores = [99, 100, 80, 70];
//최솟값이 1 최댓값이 4
// 예상 출력 값 2, 1, 3, 4
console.log(solution(scores));
</script>
</body>
</html>
잘나온다ㅇㅇ
로직은 생각했지만 배열을 1로 초기화하는 방법을 몰라서 선생님 강의 를 보고 풀었다.
중요 문장 : let n = arr.length
let answer = Array.from({length : n}, () => 1);
<== 배열의 초기화 방법