정렬을 통한 순위 비교
첫번 째 방법으로 문제를 풀었는데,

처음 반복문 두번 일일이 정렬했을 때 Memory와 시간복잡도 너무 좋지 않아, 새로운 방법을 통해 ArraysSort와 값을 비교하여 Map를 넣는 방법으로 문제를 다시 해결
class Solution {
public String[] findRelativeRanks(int[] score) {
String[] result = new String[score.length];
if(score.length == 1){
result[0] = String.valueOf("1");
}else{
for(int i = 0; i<score.length; i++){
int rank = score.length;
for(int j = 0; j<score.length; j++){
if(i!=j){
if(score[i]>score[j]){
rank--;
result[i] = String.valueOf(rank);
}else{
result[i]= String.valueOf(rank);
}
}
}
}}
for(int i =0; i<score.length; i++){
if(result[i].equals("1")){
result[i] = "Gold Medal";
}else if(result[i].equals("2")){
result[i] = "Silver Medal";
}else if(result[i].equals("3")){
result[i] = "Bronze Medal";
}
}
return result;
}
}
Arrays.sort()를 통해 오름차순 후 반복문을 통해 내림차순을 통해 그 값을 복사한 값과 비교해서 순위 비교

class Solution {
public String[] findRelativeRanks(int[] score) {
String[] result = new String[score.length];
int [] scoreClone = score.clone();
Map<Integer, String> scoreRank = new HashMap<>();
int size = score.length;
Arrays.sort(score);
for(int i = 0; i<size/2; i++){
int tmp = score[i];
score[i] = score[(size-1)-i];
score[(size-1)-i] = tmp;
}
for(int i = 0; i<size; i++){
if(i==0){
scoreRank.put(score[i], "Gold Medal");
}else if(i==1){
scoreRank.put(score[i], "Silver Medal");
}else if(i==2){
scoreRank.put(score[i], "Bronze Medal");
}else{
int rank = Integer.parseInt(String.valueOf(i))+1;
scoreRank.put(score[i], String.valueOf(rank));
}
}
for(int i =0 ; i<size; i++){
result[i] = scoreRank.get(scoreClone[i]);
}
return result;
}
}