알고리즘

[JS] 알고리즘 기초 정복 2-5번 - 등수구하기

햄❤️ 2021. 7. 13. 15:03
반응형

문제 2-5번

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

 


정답 코드

 - Array.from() 메서드는 유사 배열 객체(array-like object)나 반복 가능한 객체(iterable object)를 얕게 복사해 새로운Array 객체를 만듭니다.

Array.from({length: 5}, (v, i) => i);
// [0, 1, 2, 3, 4]
87 89 92 100 76
1 1 1 1 1

 - 점수에 해당하는 1로 초기화된 배열 answer을 만든다. 이중 for문을 돌면서 예를 들면 87보다 큰 수를 만날때 answer값을 1씩 증가한다. 87보다 큰 수인 89,92,100을 만나서 총 3번 증가되어 answer[87]은 1+3 = 4가 되어 4등이 되는 원리이다. 

function solution(arr) {
	let n = arr.length;
	let answer = Array.from({ length: n }, () => 1);
	for (let i = 0; i < n; i++) {
		for (let j = 0; j < n; j++) {
			if (arr[i] < arr[j]) answer[i]++;
		}
	}
	return answer;
}

let a = [87, 89, 92, 100, 76];
console.log(solution(a));
// (5) [4, 3, 2, 1, 5] 출력

 

728x90
반응형