[알고리즘] 등수 구하기

호두파파·2022년 1월 20일
0

알고리즘 연습

목록 보기
38/60


N(1<=N<=100)명 학생의 국어 점수가 입력되면 각 학생의 등수를 입력된 순서대로 출력하는 프로그램을 작성하라.

설명

국어점수를 의미하는 N개 정수가 배열로 입력된다. 같은 점수가 입력될 경우엔 높은 등수로 동일 처리한다. 즉 가장 높은 점수가 92점이고, 92점이 3명 존재하면 1등이 3명이고, 그 다음 점수는 4등이 된다.


문제풀이

하드 코딩을 최대한 지양해보려고 했으나, 문제 해결이 쉽지 않아 정답으로 반환할 배열의 초기값을 세팅해주었다. 해당 문제는 완전탐색 이기 때문에 이중 for문을 돌면서 인덱스 값을 비교해주었다.

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


하드 코딩 지양해서 문제풀기

Array.from

const answer = Array.from({length: len}, () => 1); 

Array.from 메서드를 이용해 입력받은 배열의 길이만큼을 숫자 1로 얕은 복사해 초기값을 만들어줄 수 있다.

function solution(arr) {
  let len = arr.length;
  let result = Array.from({ length: len }, () => 1)
  for (let i=0; i < len; i++) {
    for (let j=0; j < len; j++) {
      if (arr[i] > arr[j]) {
        result[i]++;
      }
    }
    return result;
  }
profile
안녕하세요 주니어 프론트엔드 개발자 양윤성입니다.

0개의 댓글