본문 바로가기
프론트엔드로 가는 길/프로그래머스

43.등수매기기

by woody-j 2023. 4. 19.

https://school.programmers.co.kr/learn/courses/30/lessons/120882
[ 문제 설명 ]

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

영어 점수와 수학 점수의 평균 점수를 기준으로 학생들의 등수를 매기려고 합니다.
영어 점수와 수학 점수를 담은 2차원 정수 배열 score가 주어질 때,
영어 점수와 수학 점수의 평균을 기준으로 매긴 등수를 담은 배열을 return하도록 solution 함수를 완성해주세요

 

[ 문제 풀이 ]

 

첫번째 풀이

 

function solution(score) {
  let averageScore = score.map((item) => {
    return (item[0] + item[1]) / 2;
  });
  let sortAverage = [...averageScore].sort((a, b) => {
    return b - a;
  });
  let AverageIndex = sortAverage.reduce((accumulator, value, index) => {
    return { ...accumulator, [index + 1]: value };
  }, {});
  const result = averageScore.map((value) => {
    return Number(Object.keys(AverageIndex).find((key) => AverageIndex[key] === value));
  });
return result
}

avergeScore 배열 생성 : score 배열의 각 영어점수와 수학점수를 더한 후 2로 나누어 평균 점수를 계산한 값을 배열에 저장

sortAverage 배열 생성 : averageScore 배열을 복사하여 [...averageScore] 배열을 생성하고, sort() 메소드를 이용해 평균 점수를 내림 차순으로 정렬

AverageIndex 객체 생성 : sortAverage 배열을 사용하여 reduce() 메소드 호출, 각 평균 점수를 value로 받아서 해당 평균 점수의 등수를 객체의 키로 저장, index+1을 키로 사용하여 등수를 1부터 시작하도록 함

result 배열 생성 : 각 평균 점수를 value로 받아서 AverageIndex 객체에서 해당 평균 점수의 등수를 찾고, Object.keys() 메소드와 find()메소드를 사용해서 해당 등수의 key값을 찾음. 이를 숫자로 변환



두번째 풀이

 

function solution(score) {
  const result = score.map((item, index) => {
    const average = (item[0] + item[1]) / 2;
    return score.filter((otherItem) => {
      const otherAverage = (otherItem[0] + otherItem[1]) / 2;
      return otherAverage > average;
    }).length + 1;
  });
  return result;
}

등수 계산: score 배열에 filter() 메소드를 호출하여 otherItem이라는 변수로 각 학생별로 평균 점수를 계산합니다. 이때, otherAverage 변수에는 otherItem 배열의 각 원소인 다른 학생의 평균 점수가 저장됩니다. 그 후, otherAverage가 average보다 큰 경우에만 filter() 메소드에서 해당 학생을 선택하여 배열에 포함시킵니다. 이렇게 선택된 학생들의 개수에 1을 더하여 해당 학생의 등수를 계산합니다. 이때, length 프로퍼티를 사용하여 선택된 학생들의 개수를 구하며, + 1을 통해 1부터 시작하는 등수를 계산합니다.

등수 저장 및 반환: result 배열에 각 학생의 등수를 저장하고, 최종적으로 result 배열을 반환하여 문제의 결과를 얻습니다. 각 학생의 등수가 저장된 배열이 반환됩니다.

'프론트엔드로 가는 길 > 프로그래머스' 카테고리의 다른 글

45. 특이한 정렬  (1) 2023.04.20
44. 문자열밀기  (1) 2023.04.19
42. 치킨 쿠폰  (1) 2023.04.17
41. 프로그래머스_제곱수 판별하기  (0) 2023.02.15
40. 프로그래머스_배열의 유사도  (2) 2023.02.11