문제
[리트코드] Relative Ranks
https://leetcode.com/problems/relative-ranks/
코드
class Solution {
public:
vector<string> findRelativeRanks(vector<int>& score) {
vector<string> answer;
unordered_map<int, string> m; // 점수, 등수(또는 메달)을 저장
vector<int> v = score;
sort(v.begin(), v.end(), greater<int>());
int rank = 1;
for (auto x : v) {
if (rank == 1)
m[x] = "Gold Medal";
else if (rank == 2)
m[x] = "Silver Medal";
else if (rank == 3)
m[x] = "Bronze Medal";
else
m[x] = to_string(rank);
rank++;
}
for (auto s : score) {
answer.push_back(m[s]);
}
return answer;
}
};
풀이
score
배열에 저장된 순서대로 각 원소(점수)들의 등수를 출력해야 하는 문제.
따라서 해시맵을 사용해 점수와 등수를 key-value 쌍으로 저장한다.
- 우선 점수를 높은 순으로 정렬한다. 이때, 원래 점수 배열인
score
을 정렬할 경우 기존 순서가 망가지기 때문에 복사본v
를 생성해 점수를 정렬한다. - 이후, 정렬한 배열
v
를 순회하면서 각 점수를 key, 등수(또는 메달)를 value로 하여 해시맵에 저장한다. - 이때, 등수를 지정하기 위해
rank
라는 변수를 생성해 반복문을 돌때마다rank
를 1씩 증가시켜rank
값에 따라 메달, 또는 등수를 value로 설정한다. - 이후
score
배열을 순회하면서score
배열의 원소s
에 대해s
를 key로 가지는 해시맵의 value를answer
배열에 삽입한다. - 마지막으로
answer
배열을 반환하고 종료한다.
'99클럽 TIL' 카테고리의 다른 글
99클럽 코테 스터디 30일차 TIL + 힙(C++) (0) | 2024.11.28 |
---|---|
99클럽 코테 스터디 29일차 TIL + DP(C++) (0) | 2024.11.25 |
99클럽 코테 스터디 27일차 TIL + 기타(C++) (0) | 2024.11.24 |
99클럽 코테 스터디 26일차 TIL + DP(C++) (0) | 2024.11.22 |
99클럽 코테 스터디 25일차 TIL + 힙(C++) (0) | 2024.11.21 |