[LeetCode] 506. Relative Ranks

HyeLin·2023년 2월 21일
0
post-thumbnail

크기가 n인 정수 배열 점수가 주어진다. 여기서 score[i]는 선수의 점수입니다.
1위 선수의 순위는 "Gold Medal".
2위 선수의 순위는 "Silver Medal".
3위 선수의 순위는 "Bronze Medal".
4위에서 9위까지의 선수의 순위는 순위 번호.
n 크기의 배열 답을 반환한다. 여기서 답[i]은 i번째 선수의 순위이다.
ex) [5,4,3,2,1] -> ["Gold Medal","Silver Medal","Bronze Medal","4","5"]

풀이

var findRelativeRanks = function(score) {
const arr=[...score]
arr.sort((a,b)=>b-a)

 for(let i=0;i<arr.length;i++){
if(score[i]==arr[0]){
 score[i]='Gold Medal'
}else if(score[i]==arr[1]){
 score[i]='Silver Medal'
}else if(score[i]==arr[2]){
 score[i]='Bronze Medal'
}else{
 score[i]=arr.indexOf(score[i])+1
}
 }
 
 return score
};

해석

  1. spread 연산자를 사용하여 배열을 복사 한 후, 내림차순으로 정리했다.
const arr=[...score]
arr.sort((a,b)=>b-a)
  1. arr의 첫번째, 두번째, 세번째 값과 기존 배열의 값이 같을 때, 각 메달의 이름을 넣어준다. 4번째 순위 부터는 기존 배열의 값이 복사된 arr 배열에 몇번째에 있는지 순위를 넣어준다. 순위는 1 부터 시작되기 때문에 1을 더해주었다.
  for(let i=0;i<arr.length;i++){
if(score[i]==arr[0]){
  score[i]='Gold Medal'
}else if(score[i]==arr[1]){
  score[i]='Silver Medal'
}else if(score[i]==arr[2]){
  score[i]='Bronze Medal'
}else{
  score[i]=arr.indexOf(score[i])+1
}
  }
  
  return score
profile
개발자

0개의 댓글